C++11原始字面量

        在C++中有两种类型的字面量,一种是1、11、111这种数字字面量,这种字面量没有歧义,可以原封不动的输出出来;还有一种是字符串字面量,如“Hello C++”、“D:\code\test\main.cc”,在编程过程中,常常会遇见使用的字符串带有特殊符号的情况如转义字符“\”,为了正确的使用这些字符串,我们往往需要对这些字符串进行特殊处理,这时原始字面量就能很好的解决问题了。

        C++11中添加了定义原始字符串字面量的方法,定义方式为:R"xxx(原始字符串的内容)xxx",其中括号两边的xxx起注释作用,可以省略。原始字面量R可以直接表示字符串的实际含义,而不需要额外对字符串做转义或连接等操作。

#include <iostream>
#include <string>
using namespace std;

int main() {
	string str1 = "D:\code\test\main.cc";
	string str2 = "D:\\code\\test\\main.cc";
	string str3 = R"nomore15(D:\code\test\main.cc)nomore15";

	cout << str1 << endl;
	cout << str2 << endl;
	cout << str3 << endl;

	return 0;
}

        输出结果: 

         在str1中\c和\m转义失败,会保持原样输出,而\t则转义成了制表符。在str2中,用\将其本身从特殊字符转译成了普通字符,故会将\保持原样输出。在str3中,()左右两边的字符均被忽略,而()中的内容不会做任何处理。

        \除了做转义字符,还会做续航符。所以当一个字符串占了多行的时候也可以使用原始字面量。

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string str1 = "\
    <html>\
        <head>\
            <title>\
                C++学习\
            </title>\
        </head>\
            <body>\
                <p>\
                    原始字面量\
                </p>\
            </body>\
    </html>";

    string str2 = R"(
    <html>
        <head>
            <title>
                C++学习
            </title>
        </head>
            <body>
                <p>
                    原始字面量
                </p>
            </body>
    </html>)";

    cout << str1 << "\n" << endl;
    cout << str2 << endl;


    return 0;
}

        输出结果:

         在C++11之前如果一个字符串分别写到了不同的行里边,需要加连接符,这种方式不仅繁琐,还破坏了表达式的原始含义,如果使用原始字面量就变得简单很多,很强直观,可读性强。

        在R “xxx(raw string)xxx” 中,原始字符串必须用括号()括起来,括号的前后可以加其他字符串,所加的字符串会被忽略,并且加的字符串必须相同且在括号两边同时出现。xxx中不能出现空格且不能超过15个ASCII字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值