C++11中的新特性raw介紹

我們都知道,在經典c++中,如果我們要在一個字符串輸出中顯示【\n】、【"】等特殊字符,需要使用到轉義字符,就像下面的例子中一樣:
...
        string s = "在c++中,如果要換行請輸入\\n,如果要顯示雙引號則要輸入\\和\",比較麻煩!";
	cout << s << endl;
...

運行後,會顯示出字符串【在c++中,如果要換行請輸入\n,如果要顯示雙引號則要輸入\和",比較麻煩!】,不僅麻煩一點,關鍵是可讀性降低不少。所以在c++11版本中,給我們提供了一個raw版字符串,也叫原始字符串,在這種字符串中,每個字符表示的都是它自己,【\n】不再表示換行,【\"】表示的是兩個字符【\】和【"】。使用方法也比較簡單,只需在字符串的開頭處加上【R"(】,然後在結尾處加上【)"】,如下所示:

...
        string s = R"(如果使用了raw,顯示換行則只需直接輸入\n即可!)";
	cout << s << endl;
運行後,會顯示字符串【如果使用了raw,顯示換行則只需直接輸入\n即可!】。

其中的【R】是raw字符串的前綴,而【"(】和【)"】則是raw字符串格式的界定符,既然【)"】是界定符,那麼如果我們要在字符串中顯示【)"】怎麼辦,用上面那個方法行不行?答案是不行!因爲編譯器在遇到第一個【)"】時,會把這個要顯示的對象當成字符串的結束!不過沒關係,raw爲我們提供了一種別的方法:我們可以在界定符組合中間添加一些其它字符,比如【abc】或【1234】等,但要注意的是,需要在開頭界定符和結尾界定符裏面都要添加,而且這兩組字符必須一致!

...
        string s = R"1234(現在,我們連"(和)"都可以顯示了)1234";
	cout << s << endl;
...
運行後,會顯示字符串【現在,我們連"(和)"都可以顯示了】。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章