C++11 原始字面量
Posted Overboom
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++11 原始字面量相关的知识,希望对你有一定的参考价值。
1. 原始字面量是干什么的
在 C++11 中添加了定义原始字符串的字面量,定义方式为:R “xxx(原始字符串)xxx” 其中()两边的字符串可以省略。
原始字面量 R 可以直接表示字符串的实际含义,而不需要额外对字符串做转译或连接等操作。
2. code示例
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str = "D:\\hello\\world\\test.text";
cout << str << endl;
string str1 = "D:\\\\hello\\\\world\\\\test.text";
cout << str1 << endl;
string str2 = R"(D:\\hello\\world\\test.text)";
cout << str2 << endl;
return 0;
}
输出结果:
在 D:\\hello\\world\\test.text 中 \\h 和 \\w 转译失败,对应的字符会原样输出
在 D:\\hello\\world\\test.text 中路径的间隔符为 \\ 但是这个字符又是转译字符,因此需要使用转译字符将其转译,最终才能得到一个没有特殊含义的普通字符
在 R"(D:\\hello\\world\\test.text)" 使用了原始字面量 R()中的内容就是描述路径的原始字符串,无需做任何处理
最后强调一个细节:在R “xxx(raw string)xxx” 中,原始字符串必须用括号()括起来,括号的前后可以加其他字符串,所加的字符串会被忽略,并且加的字符串必须在括号两边同时出现。
以上是关于C++11 原始字面量的主要内容,如果未能解决你的问题,请参考以下文章
托管 C++ 中的逐字字面量? (就像 C# 的 @"blah")
C++11之用户自定义字面量(ClassType operator““_C(param...))