我有以下的输出,使用 printf()
语句,但我想把实际的引号放在双引号中,所以输出是
printf("She said time flies like an arrow, but fruit flies like a banana.");
但我想把真正的引号放在双引号里,所以输出的是
她说 "光阴似箭,果实如蕉"。
在不影响双引号的情况下,用双引号把字符串的字面意思包裹起来。printf()
声明。
如何才能做到这一点?
用反斜杠将引号转义。
printf("She said \"time flies like an arrow, but fruit flies like a banana\".");
有一些特殊的... 逸字 你可以在字符串字元中使用,这些字元用前导反斜线表示。
值得庆幸的是,在C++11中,还有一种更讨人喜欢的方法,那就是使用原始的字符串字元。
printf("She said \"time flies like an arrow, but fruit flies like a banana\".");
变成了。
printf(R"(She said "time flies like an arrow, but fruit flies like a banana".)");
关于在开头引号后、结尾引号前加括号的问题,注意它们几乎可以是16个字符以内的任意组合,有助于避免字符串本身存在组合的情况。具体来说
基本源字符集的任何成员,除了:空格、左小括号(、右小括号)、反斜杠\以及代表水平制表符、垂直制表符、换页符和换行符的控制字符"(N3936 §2.14.5[lex.string]语法)和 "最多16个字符"(§2.14.52)。
它让这个微不足道的句子变得多么清晰,也许值得商榷,但当用在HTML或JSON这样的格式化字符串上时,它无疑要清晰得多。