2018.11.2: 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;
...

运行后,会显示字符串【现在,我们连"(和)"都可以显示了】。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值