优秀的编程知识分享平台

网站首页 > 技术文章 正文

命令行包含换行空格等字符的踩坑经验

nanyue 2024-08-27 18:09:03 技术文章 6 ℃

我们写程序时, 经常会用到执行一段命令行代码, 然后获取标准输出流的逻辑。

一些常见的问题比如命令行参数中如果是文件路径的话, 很容易犯的问题就是文件路径没有使用""双引号, 这样一旦路径中包含空格的话就会被拆分。

最近工作中遇到一个需求, 需要对一段C++代码进行格式化操作, 具体的命令行如下

format.exe "代码片段"

这样就会带来一个问题, 命令行中是没有换行符的, 即使在cmd, bash等窗口中输入了多行, 执行的时候也是拼接成一行进行处理。

大家可能会想到, 是不是把换行符去掉就可以了, 依靠代码本身的空格缩进来进行格式化。 这里同样存在一个问题, #include语句如果和后面的语句没有换行分开, 会报语法错误。

这里我想到的方案是, 先把代码片段中的换行符替换为类似{NewLine}这样的占位符, 在format程序中, 再把{NewLine}还原回换行符进行处理, 解决了这个问题。

C++格式化我是基于LLVM的clang-format进行的二次开发, 实测性能也较好, 可以作为格式化代码的一个方案。

最近发表
标签列表