为C++字符串中的特殊符号 (") 赋予文字含义的有效C++方法



我想把这个:

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

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

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

如果我有一个很大的string有很多("(,为每个("(添加((变得困难。有没有一种简单的方法可以在C++实现这一目标?

最简单的方法是使用原始字符串文字:

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(至少我找不到解决方法。如果有人证明我错了,请欣赏。

最新更新