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

 更新时间:2025年03月19日 09:47:16   作者:我们的五年  
原始字符串字面量(Raw String Literal)是C++11引入的一种字符串表示方式,用于简化字符串的定义,特别是当字符串中包含大量特殊字符(如换行符、双引号等)时,这篇文章给大家介绍C++11原始字符串字面量(Json字符串表达更方便)的相关知识,感兴趣的朋友一起看看吧

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 原始字符串字面量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言内存泄漏常见情况及解决方案详解

    C语言内存泄漏常见情况及解决方案详解

    这篇文章主要为大家介绍了C语言内存泄漏常见情况及解决方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • C语言中static的使用介绍

    C语言中static的使用介绍

    大家好,本篇文章主要讲的是C语言中static的使用介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • C语言创建windows窗口实例

    C语言创建windows窗口实例

    这篇文章主要介绍了C语言创建windows窗口实例,本文直接给出实现代码,同时讲解了编码的步骤,需要的朋友可以参考下
    2015-04-04
  • 使用QGraphicsView实现气泡聊天窗口+排雷功能

    使用QGraphicsView实现气泡聊天窗口+排雷功能

    这篇文章主要介绍了使用QGraphicsView实现气泡聊天窗口+排雷,重点给大家介绍使用QWebEngineView控件内嵌html+CSS的实现方式,需要的朋友可以参考下
    2022-04-04
  • C语言实现生成新春福字的示例详解

    C语言实现生成新春福字的示例详解

    这篇文章主要介绍了如何利用C语言实现生成各个字体的新春福字,再也不用担心支付宝扫福找不到图片了,感兴趣的同学可以跟随小编学习一下
    2022-01-01
  • c++只保留float型的小数点后两位问题

    c++只保留float型的小数点后两位问题

    这篇文章主要介绍了c++只保留float型的小数点后两位问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C++类成员函数中的名字查找问题

    C++类成员函数中的名字查找问题

    这篇文章主要介绍了C++类成员函数中的名字查找问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C++ override关键字使用详解

    C++ override关键字使用详解

    这篇文章主要介绍了C++ override关键字使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Qt音视频开发之利用ffmpeg实现解码本地摄像头

    Qt音视频开发之利用ffmpeg实现解码本地摄像头

    一开始用ffmpeg做的是视频流的解析,后面增加了本地视频文件的支持,到后面发现ffmpeg也是支持本地摄像头设备的,所以本文就来用ffmpeg实现解码本地摄像头功能吧
    2023-03-03
  • C++ LeetCode1812判断国际象棋棋盘格子颜色

    C++ LeetCode1812判断国际象棋棋盘格子颜色

    这篇文章主要为大家介绍了C++ LeetCode1812判断国际象棋棋盘格子颜色, 有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12

最新评论