使用sed命令包装字符串
Use sed command to wrap strings
我有一个C++程序,我想把大多数字符串包装在MACRO中。
例如,代码:
#include "header.h"
const char* str;
if (func("Hello, world", "Goodbye", "world") &&
func(MACRO("Hello, world"), "Hello"))
{
str = "MACRO("didIt")";
}
应该变成:
#include "header.h"
const char* str;
if (func(MACRO("Hello, world"), MACRO("Goodbye"), MACRO("world")) &&
func(MACRO("Hello, world"), MACRO("Hello")))
{
str = MACRO("MACRO("didIt")");
}
请注意,如果字符串已经在MACRO中,则不应该对其进行双换行。此外,如果字符串是预处理器语句的一部分,则不应对其进行修改。
我试过用sed来做这件事,但我做不好。我是sed的新手,所以可能是我做得不对,或者sed做不到。
我在Windows上运行,如果有帮助的话,我会使用Visual studio。我在我的Windows电脑上安装了一个sed实用程序,认为这会很有帮助。
谢谢。
您确实想要负后备,而sed
不支持。使用更强大的工具,比如python,比如:
cat prog.cpp | python -c 'import re,sys;for line in sys.stdin: print re.sub(r'''(?<!MACRO()"([^"]*)''',"MACRO("g<1>"))'
相关文章:
- 包装C++函数以使用 SWIG 获取 Lua 字符串表
- 如何在 python 包装中使用 unicode 字符串用于带有 cython 的 c++ 类?
- 将 std::function 包装在类中,函数名称为字符串
- 从 c++ 库中获取一个字符串,周围有一个 java 包装器
- C# 使用包装类中的字符串参数调用 C++ 方法
- 从 C++ => C 包装的 API(多线程)传输错误字符串
- 如何从c#中的托管c++dll(使用包装类)获取字符串
- 包装通用函数以从字符串中获取其参数
- 包装字符串缓冲区
- 带有boost变量递归包装器的字符串解析器
- 通过本机字符串创建 BSTR(使用_bstr_t包装器)时,如何设置长度
- 如何在C++中围绕任意函数创建字符串参数化包装器
- 通过 SSE4 包装器比较字符串
- 使用sed命令包装字符串
- 是否有c++ type_info的可移植包装器来标准化类型名称字符串格式?
- SWIG包装c++ for Python:将字符串列表转换为STL字符串的STL向量
- C++ 2 个字符串流的包装器("dialogue"模仿)
- 分割和包装字符串
- SWIG将一个c++字符串包装成java中的byte[]
- C字符串函数的包装器类有问题