前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++11 语言特性之原始字符串(Raw String Literals)

C++11 语言特性之原始字符串(Raw String Literals)

作者头像
Skykguj
发布2022-09-09 11:57:27
1.7K0
发布2022-09-09 11:57:27
举报
文章被收录于专栏:Skykguj 's Blog

C++11 标准为 C++ 编程语言的第三个官方标准,包含了核心语言的新机能,并且拓展 C++ 的标准程序库,加入了大部分的 C++ Technical Report 1 程序库。

看到形如:R"" 这样的写法,相信学过 Python 的童鞋会感到似曾相识。Python 支持所谓的 “raw string”,它最大的特点就是将反斜杠视为文字字符。

C++11 也新增了一种叫原始字符串(Raw String Literals)的类型。在原始字符串中,字符表示的就是它自己,而无需使用 "\" 转义,例如,"\n" 不表示换行符,而是表示两个常规字符:"\" 和 "n",这时使用 "\n" 将不再输出换行符。 原始字符串使用 "( 和 )" 作为定界符,并使用 R 来标识原始字符串:

代码语言:javascript
复制
cout<<R"(Hello,"C++".)"<<endl;

上述代码将输出以下内容:

代码语言:javascript
复制
Hello,"C++".

如果不使用原始字符串,则需要将代码改为:

代码语言:javascript
复制
cout<<"Hello,\"C++\"."<<endl;

原始字符串还可以自定义定界符,默认定界符是 "( 和 )"。因此若想要在字符串中允许 )" ,则必须自定义定界符。如:

代码语言:javascript
复制
cout<<R"+*("(Who is it?)" It's your neighbor.)+*"<<endl;

将输出:

代码语言:javascript
复制
"(Who is it?)" It's your neighbor.

自定义定界符是在默认定界符之间田间任意数量的基本字符,但空格,斜杠,括号除外。 原始字符串可以还包括换行符,示例代码如下(让你体会复制粘贴的恐惧

):

代码语言:javascript
复制
#include <iostream> //This program needs C + + 11 to compile.
using namespace std;
int main()
{
    cout<<R"(                ********
               ************
               ####....#.
             #..###.....##....
             ###.......######              ###            ###
                ...........               #...#          #...#
               ##*#######                 #.#.#          #.#.#
            ####*******######             #.#.#          #.#.#
           ...#***.****.*###....          #...#          #...#
           ....**********##.....           ###            ###
           ....****    *****....
             ####        ####
           ######        ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
##########################################    #----------#
#.....#......##.....#......##.....#......#    #----------#
##########################################    #----------#
#.#..#....#..##.#..#....#..##.#..#....#..#    #----------#
##########################################    ############)"<<endl;
    return 0;
}

代码将输出一个超级玛丽的界面:

Ps: 这段时间备战蓝桥杯 EV3 国赛,一直没来得及写博客,拖更了一个多星期,再过几天就应该恢复正常了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021 年 05 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档