当前位置: 代码网 > it编程>编程语言>Javascript > 详解C++11 原始字符串字面量(Json字符串表达更方便)

详解C++11 原始字符串字面量(Json字符串表达更方便)

2025年03月19日 Javascript 我要评论
1.为什么要用原始字符串字面量?因为普通字符串如果要有特定的字符( " 字符 或者 \ 字符),就要进行转移(\进行转义),不然就是特殊的含义。这就造成了如果一个字符串有很多的这些字符,表

1.为什么要用原始字符串字面量?

因为普通字符串如果要有特定的字符(   "  字符    或者   \   字符),就要进行转移(\进行转义),不然就是特殊的含义。

这就造成了如果一个字符串有很多的这些字符,表达起来就不方便。有这个方面的需求,那么有没有一种字符串把所有的字符都按字面意思处理呢?那么就有了原始字符串量。

2.原始字符串字面量:(输入什么就是什么)

kimi:

原始字符串字面量(raw string literal)是c++11引入的一种字符串表示方式,用于简化字符串的定义,特别是当字符串中包含大量特殊字符(如换行符、双引号等)时。原始字符串字面量避免了对这些特殊字符进行转义的需要,从而使代码更清晰、更易于维护

从上面来看,那么json风格的字符串就包含了很多的",这样用原始字符串字母量就比较方便咯。

内容里面是什么,就直接是什么,不会进行特殊字符处理。

原始字符串字面量的基本格式:

r"(内容)"

r"( 是原始字符串的开始标记
内容 是字符串的实际内容,可以包含任意字符,包括换行符、双引号等。
)" 是原始字符串的结束标记

但似乎也有bug,如果内容里面有)"那么就会当成字符串的结束。

但是还提供了原始字符串字面量的变体。

原始字符串字面量变体:

有了这个,可以自定义了,那么就实用多了。可以根据自己的场景,即使内容里面出现)"也可以处理了。

r"delimiter(       开始标志

内容

)delimiter"     结束标志

r"delimiter(内容)delimiter"

对比这三个的区别:

#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字符串中也经常需要使用双引号,原始字符串可以简化定义:

std::string jsonstring = r"({"name": "alice", "age": 30, "scores": [85, 90, 78]})";

html:

html代码直接写入字符串,不需要转义或手动添加换行符。

std::string html = r"(
<!doctype html>
<html>
<head>
    <title>example</title>
</head>
<body>
    <h1>hello, world!</h1>
</body>
</html>
)";

到此这篇关于c++11 原始字符串字面量(json字符串表达更方便)的文章就介绍到这了,更多相关c++11 原始字符串字面量内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com