目前,我有一个C字符串定义如下:
std::string str = "printf(\"Hello world\n\")";
最外面的双引号用于此字符串。我们可以看到字符串中的双引号已被\
转义。
当我使用fprintf()
将上述字符串写入文件时,我看到\n
被视为换行符,但事实证明\\n
将解决此问题。
此文件中有许多文字\n
。我在vim中尝试了%s/\n/\\n/g
,但即使是真正的"换行符"受到影响。
如何在vim中将文字\n
替换为\\n
,而不影响真实的换行符?
答案 0 :(得分:4)
如果要将所有文字\n
替换为文字\\n
,请使用以下命令:
:%s/\\n/\\\\n/g
也就是说,每个反斜杠必须单独转义。
字符串
std::string str = "printf(\"Hello world\n\")";
将导致
std::string str = "printf(\"Hello world\\n\")";
并且不会替换真正的换行符。
答案 1 :(得分:2)
C ++ 11引入了原始字符串,在这种情况下非常方便。
std::string str = R"(printf("Hello world\n"))";
参见string literals表格(6)的参考资料。