C++11 原始字符串字面量R“()“

原始字符串字面量(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;
        }
    )";
相关推荐
郝学胜-神的一滴6 分钟前
Qt 高级开发 022:栅格布局深度实战
开发语言·c++·qt·软件构建·用户界面
basketball6167 分钟前
设计模式入门:3. 装饰器模式详解 C++实现
c++·设计模式·装饰器模式
土狗TuGou13 分钟前
SQL进阶笔记 · 第1篇:存储引擎
java·数据库·笔记·后端·sql·mysql
雨落在了我的手上19 分钟前
Java数据结构(一):初识集合框架
java·开发语言
程序大视界20 分钟前
【C++ 从基础到项目实战】C++(三):函数进阶——重载、回调、递归与默认参数
开发语言·c++·cpp
码语智行21 分钟前
Spring Security自定义AuthenticationManager实现手机号/密码双认证
java·后端·spring
SuniaWang21 分钟前
《AgentX 专栏》07-全链路可观测:用OpenTelemetry+Jaeger让每次AI对话都可追踪可复盘
java·人工智能·spring·架构·langchain·opentelemetry·agenx
fengxin_rou21 分钟前
【从零开始的JUC并发第五章】:线程池详解
java·jvm·spring
西梅汁24 分钟前
C++ 线程间通信(二)
c++
咖啡八杯26 分钟前
GoF设计模式——装饰模式
java·算法·设计模式·装饰器模式