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++11 字符数组初始化和字符串字面量

托管 C++ 中的逐字字面量? (就像 C# 的 @"blah")

C++11之用户自定义字面量(ClassType operator““_C(param...))

C++11之用户自定义字面量(ClassType operator““_C(param...))

第5章 技巧性基础:5.4 原始数组和字符串字面量的模板

Java 12 特性冻结,但原始字符串字面量特性被移除