admin管理员组文章数量:1444821
【C++11】:原始字符串字面量(Json字符串表达更方便)
1.为什么要用原始字符串字面量?
因为普通字符串如果要有特定的字符( " 字符 或者 \ 字符),就要进行转移(\进行转义),不然就是特殊的含义。
这就造成了如果一个字符串有很多的这些字符,表达起来就不方便。有这个方面的需求,那么有没有一种字符串把所有的字符都按字面意思处理呢?那么就有了原始字符串量。
2.原始字符串字面量:(输入什么就是什么)
Kimi:
原始字符串字面量(Raw String Literal)是C++11引入的一种字符串表示方式,用于简化字符串的定义,特别是当字符串中包含大量特殊字符(如换行符、双引号等)时。原始字符串字面量避免了对这些特殊字符进行转义的需要,从而使代码更清晰、更易于维护。
从上面来看,那么Json风格的字符串就包含了很多的",这样用原始字符串字母量就比较方便咯。
内容里面是什么,就直接是什么,不会进行特殊字符处理。
原始字符串字面量的基本格式:
代码语言:javascript代码运行次数:0运行复制R"(内容)"
R"( 是原始字符串的开始标记。 内容 是字符串的实际内容,可以包含任意字符,包括换行符、双引号等。 )" 是原始字符串的结束标记。 但似乎也有BUG,如果内容里面有)"那么就会当成字符串的结束。 但是还提供了原始字符串字面量的变体。
原始字符串字面量变体:
有了这个,可以自定义了,那么就实用多了。可以根据自己的场景,即使内容里面出现)"也可以处理了。
R"delimiter( 开始标志
内容
)delimiter" 结束标志
代码语言:javascript代码运行次数:0运行复制R"delimiter(内容)delimiter"
对比这三个的区别:
代码语言:javascript代码运行次数:0运行复制#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <string>
using namespace std;
int main()
{
//普通正常字符串
string a = "aaa\"\\";
//原始字符串字面量
string b = R"(aaa\"\\)";
//原始字符串字面量变体,可以自己设计边界
//R"aaa(字符串开始,)aaa"字符串结束。
string c = R"aaa("("( )")")aaa";
cout << a << endl;
cout << b << endl;
cout << c << endl;
return 0;
}
适用场景:
JSON字符串
JSON字符串中也经常需要使用双引号,原始字符串可以简化定义:
代码语言:javascript代码运行次数:0运行复制std::string jsonString = R"({"name": "Alice", "age": 30, "scores": [85, 90, 78]})";
HTML:
HTML代码直接写入字符串,不需要转义或手动添加换行符。
代码语言:javascript代码运行次数:0运行复制std::string html = R"(
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
)";
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-03-18,如有侵权请联系 cloudcommunity@tencent 删除设计字符串c++jsonstring本文标签: C11原始字符串字面量(Json字符串表达更方便)
版权声明:本文标题:【C++11】:原始字符串字面量(Json字符串表达更方便) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1748206434a2826077.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论