原始(raw)字符串

C++11新增的一种字符串类型是原始(raw)字符串,在原始(raw)字符串中,字符表示的就是其本身,转义字符会失去意义。\n不是换行,而是普通的\n字符。
原始(raw)字符串使用R"()"作为左右边界

#include<iostream>
using namespace std;
int main()
{
    char a[] = R"(jing \n \0 "dghtql"!@)";
    cout << a << endl;
}

输出:

[Running] cd "d:\程序\随笔程序\2020年1月\" && g++ raw.cpp -o raw && "d:\程序\随笔程序\20201月\"raw
jing \n \0 "dghtql"!@

[Done] exited with code=0 in 3.536 seconds

如果是常规的字符串,输出相同的内容,需要这样写

#include<iostream>
using namespace std;
int main()
{
    char a[] = "jing \"\\n\" \"\\0\" \"dghtql\"!@";
    cout << a << endl;
}

输出:

[Running] cd "d:\程序\随笔程序\2020年1月\" && g++ raw.cpp -o raw && "d:\程序\随笔程序\20201月\"raw
jing "\n" "\0" "dghtql"!@

[Done] exited with code=0 in 3.281 seconds

可以看出后一种非常复杂。

如果原始(raw)字符串中本来就包含)",会不会直接认为已经到了字符串的结尾?为了避免这种情况,C++11允许程序员在"(放入任意字符,这样的话,在结尾)"之间也得包含相同的字符。如R"*+(dghtql)")*+",这样就可以避免错误识别的情况了

发布了267 篇原创文章 · 获赞 38 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/dghcs18/article/details/104043252