首页 新闻 会员 周边 捐助

c++ string VS中R转义字符处理 看不出啥意思呀

0
悬赏园豆:20 [已解决问题] 解决于 2023-04-11 11:28

c++
mljqqh的主页 mljqqh | 初学一级 | 园豆:96
提问于:2023-04-10 23:36
< >
分享
最佳答案
1

这是c++ 11标准中的新扩展
https://learn.microsoft.com/en-us/cpp/cpp/string-and-character-literals-cpp?view=msvc-170 微软的这个描述挺多,可以看看

在C++11中R、u8、u8R、u、uR、U、UR和LR是新的字符串修饰符,当用它们来修饰字符串时,即使是宏名,也将作为修饰符来解释。
如果想了解这些,可以找个C++11的图书系统的学习下,c++的标准近几年扩展很多

收获园豆:10
2012 | 高人七级 |园豆:21645 | 2023-04-11 08:49

C++11新特性:原始(raw)字符串
C++11新特性:原始(raw)字符串
C++11新特性:原始(raw)字符串
在原始字符串中,字符表示的就是自己。

原始字符串将"(和)"用作定界符,并使用前缀R标识原始字符串:

cout << R"(Jim "King" Try uses "\n" instead of endl)" << "\n";
1
上述代码将显示如下内容:

Jim "King" Try uses "\n" instead of endl
1
运行结果:

C++11原始字符串同时包含其它特点:

字符串中的换行符将在屏幕上如实显示。
在表示字符串开头的"和(之间可以添加其它字符,不过必须在表示字符串结尾的)和"之间添加同样的字符。
原始字符串会在遇到第一个)"时结束,如果字符串中包含)"该怎么办?

第二个特性允许在字符串中使用任何和原始字符串边界标识不同的任意字符组合,而不用担心提前结束原始字符串。也就是说,可在"和(之间、)和"之间添加任意数量的对称字符来自定义界定符,但是空格、左括号、右括号、斜杠和控制字符(如制表符和换行符)除外。

比如:

cout << R"!(Jim "King" Try uses "\n" (instead of endl))!" << "\n";
1
我们在"和(之间、)和"之间添加了一个!,这样instead of endl左右的()就能顺利打印出来了。

上述代码将显示如下内容:

Jim "King" Try uses "\n" (instead of endl)
1
运行结果:

另外,可将前缀R与其他字符串前缀结合使用,比如 Ru 表示 char16_t 类型的原始字符串。
————————————————
版权声明:本文为CSDN博主「UestcXiye」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ProgramNovice/article/details/126773593

mljqqh | 园豆:96 (初学一级) | 2023-04-11 11:27
其他回答(1)
0

输出跟代码一致啊,亮红色就是不显示的部分,暗红色就是显示的部分
R"delimiter( raw_characters )delimiter"
内部就是需要保持转义的数据

收获园豆:10
人间春风意 | 园豆:2780 (老鸟四级) | 2023-04-11 08:42

C++11新特性:原始(raw)字符串
C++11新特性:原始(raw)字符串
C++11新特性:原始(raw)字符串
在原始字符串中,字符表示的就是自己。

原始字符串将"(和)"用作定界符,并使用前缀R标识原始字符串:

cout << R"(Jim "King" Try uses "\n" instead of endl)" << "\n";
1
上述代码将显示如下内容:

Jim "King" Try uses "\n" instead of endl
1
运行结果:

C++11原始字符串同时包含其它特点:

字符串中的换行符将在屏幕上如实显示。
在表示字符串开头的"和(之间可以添加其它字符,不过必须在表示字符串结尾的)和"之间添加同样的字符。
原始字符串会在遇到第一个)"时结束,如果字符串中包含)"该怎么办?

第二个特性允许在字符串中使用任何和原始字符串边界标识不同的任意字符组合,而不用担心提前结束原始字符串。也就是说,可在"和(之间、)和"之间添加任意数量的对称字符来自定义界定符,但是空格、左括号、右括号、斜杠和控制字符(如制表符和换行符)除外。

比如:

cout << R"!(Jim "King" Try uses "\n" (instead of endl))!" << "\n";
1
我们在"和(之间、)和"之间添加了一个!,这样instead of endl左右的()就能顺利打印出来了。

上述代码将显示如下内容:

Jim "King" Try uses "\n" (instead of endl)
1
运行结果:

另外,可将前缀R与其他字符串前缀结合使用,比如 Ru 表示 char16_t 类型的原始字符串。
————————————————
版权声明:本文为CSDN博主「UestcXiye」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ProgramNovice/article/details/126773593

支持(0) 反对(0) mljqqh | 园豆:96 (初学一级) | 2023-04-11 11:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册