詳解C++11 原始字符串字面量(Json字符串表達更方便)
1.為什么要用原始字符串字面量?
因為普通字符串如果要有特定的字符( " 字符 或者 \ 字符),就要進行轉移(\進行轉義),不然就是特殊的含義。
這就造成了如果一個字符串有很多的這些字符,表達起來就不方便。有這個方面的需求,那么有沒有一種字符串把所有的字符都按字面意思處理呢?那么就有了原始字符串量。
2.原始字符串字面量:(輸入什么就是什么)
Kimi:
原始字符串字面量(Raw String Literal)是C++11引入的一種字符串表示方式,用于簡化字符串的定義,特別是當字符串中包含大量特殊字符(如換行符、雙引號等)時。原始字符串字面量避免了對這些特殊字符進行轉義的需要,從而使代碼更清晰、更易于維護。
從上面來看,那么Json風格的字符串就包含了很多的",這樣用原始字符串字母量就比較方便咯。
內容里面是什么,就直接是什么,不會進行特殊字符處理。
原始字符串字面量的基本格式:
R"(內容)"
R"( 是原始字符串的開始標記。
內容 是字符串的實際內容,可以包含任意字符,包括換行符、雙引號等。
)" 是原始字符串的結束標記。但似乎也有BUG,如果內容里面有)"那么就會當成字符串的結束。
但是還提供了原始字符串字面量的變體。
原始字符串字面量變體:
有了這個,可以自定義了,那么就實用多了??梢愿鶕?jù)自己的場景,即使內容里面出現(xiàn))"也可以處理了。
R"delimiter( 開始標志
內容
)delimiter" 結束標志
R"delimiter(內容)delimiter"
對比這三個的區(qū)別:
#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 原始字符串字面量內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用QGraphicsView實現(xiàn)氣泡聊天窗口+排雷功能
這篇文章主要介紹了使用QGraphicsView實現(xiàn)氣泡聊天窗口+排雷,重點給大家介紹使用QWebEngineView控件內嵌html+CSS的實現(xiàn)方式,需要的朋友可以參考下2022-04-04Qt音視頻開發(fā)之利用ffmpeg實現(xiàn)解碼本地攝像頭
一開始用ffmpeg做的是視頻流的解析,后面增加了本地視頻文件的支持,到后面發(fā)現(xiàn)ffmpeg也是支持本地攝像頭設備的,所以本文就來用ffmpeg實現(xiàn)解碼本地攝像頭功能吧2023-03-03