为 C++ 字符串中的特殊符号 (") 赋予字面意义的高效 C++ 方法

Efficient C++ way of giving literal meaning to special symbols (") in a C++ string

我想把这个:

<script src = "Script2.js" type = "text/javascript"> < / script>

std::string 中,所以我在每个双引号 (") 之前附加一个 (\) 符号,以赋予其字面意义 ",而不是在中的字符串分界C++ 像这样:

std::string jsFilesImport = "<script src = \"Script2.js\" type = \"text/javascript\"> < / script>\""

如果我有一个很大的 string 和许多 ("),则为每个 (") 添加 (\) 变得困难。在 C++ 中有实现此目的的简单方法吗?

最简单的方法是使用 raw string literal:

std::string s = R"x(<script src = "Script2.js" type = "text/javascript"> < / script>)x";
             // ^^^^                                                                ^^^

您只需要注意不要在内部提供的文本中使用 x( )x 分隔符。出现在这些分隔符中的所有其他字符都按原样呈现(包括换行符)。 x任意选择,也可以是something()something


为了防止进一步的问题:

不,不可能1

std::string s = R"resource(
#include "MyRawTextResource.txt"
)resource";

预处理器无法识别 #include "MyRawTextResource.txt" 语句,因为它包含在一对双引号 (") 中。

对于这种情况,请考虑引入自定义预构建步骤,在编译前执行文本替换。


1)至少我找不到解决方法。如果有人证明我错了,我将不胜感激。