原始字符串字面量(Raw String Literals)
R"()"
是C++11引入的一项特性,它允许创建不需要转义字符 的字符串字面量。字符串中包含特殊字符、换行符和其他转义字符时,不需要反斜杠转义它们。
-
原始(Raw) :不用使用反斜杠转移某些字符,直接书写字符串的原始内容
-
字面量:程序中固定值的符号的一种表示,通常是表示常量的一种方式。常见字面量
- 整数字面量:42
- 浮点数字面量:3.14
- 字符字面量:'A'
- 字符串字面量:"Hello, World!"
- 布尔字面量:true 或 false
- 空指针字面量:nullptr(C++11及以后版本)
比如,在LearnOpenGL CN 中,表示一段shader代码,并未使用原始字符串字面量 ,就需要把所有换行符手动写出,如:
c
const char* glslCode =
"#version 330 core\n"
"\n"
"layout(location = 0) in vec3 inPos;\n"
"layout(location = 1) in vec3 inCol;\n"
"\n"
"out vec3 fragColor;\n"
"\n"
"void main() {\n"
" fragColor = inCol;\n"
"}\n";
如果使用原始字符串字面量:优雅
c
const char* glslCode = R"(
#version 330 core
layout(location = 0) in vec3 inPosition;
layout(location = 1) in vec3 inColor;
out vec3 fragColor;
void main() {
fragColor = inColor;
}
)";