C++11新特性之原始自面量

一、原始字面量解释+举例

对于原始字面量进行解释:字面量其实就是固定的值,而这个固定的值会分为两类

一类是数字类型:11,12.3等

一类是字符串类型:"Hello world"  "How\t"等

在字符串类型中的 "How\t"有两种解释:

一种是五个字符“H”、"o"、"w"、"\"、"t"。

一种是四个字符“H”、"o"、"w"、"\t"(制表符\t)。

在这个过程中如果我们就想要按照原意,而不想让"\t"进行转义,我就想要原始的字符串,这个时候就可以用原始字面量进行修饰。

二、原始字面量的定义方式

       在C++11中添加了定义原始字符串的字面量,定义方式为:R“xxx(原始字符串)xxx”其中()两边的字符串可以省略。原始字面量R可以直接表示字符串的实际含义,而不需要额外对字符串做转义或连接等操作。
       比如:编程过程中,使用的字符串中常带有一些特殊字符,对于这些字符往往要做专门的处理,使用了原始字面量就可以轻松的解决这个问题了。

三、原始字面量的代码应用

打印路径:

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string str = "C:\hello\world\test.text";
	cout << str << endl;
	string str1 = "C:\\hello\\world\\test.text";
	cout << str1 << endl;
	string str2 = R"(C:\hello\world\test.text)";
	cout << str2 << endl;

	return 0;
}

在C:\hello\world\test.text中的\h和\w转义失败,对应的字符会原样输出,\t具有特殊含义:制表符,所以被转义也是占就四个字符(相当于一个Tab缩进)。

不使用原始字面量:
在C:\\hello\\world\\test.text中路径的间隔符为\但是这个字符又是转义字符,因此需要使用转义字符将其转义,最终才能得到一个没有特殊含义的普通字符\

使用原始字面量:
在R"(D:\hello\world\test.text)"使用了原始字面量R()中的内容就是描述路径的原始字符串,无需做任何处理

输出HTML标签:

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string str = "<html>\
        <head>\
        <title>\
        C++11新特性\
        </title>\
        </head>\
        <body>\
        <p>\
        原始字面量\
        </p>\
        </body>\
        </html>";
	cout << str << endl;
	return 0;
}

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

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string str = R"(<html>
        <head>
        <title>
        C++11新特性
        </title>
        </head>
        <body>
        <p>
        原始字面量
        </p>
        </body>
        </html>)";
	cout << str << endl;

	return 0;
}

最后强调一个细节:在R “xxx(raw string)xxx” 中,原始字符串必须用括号()括起来,括号的前后可以加其他字符串,所加的字符串会被忽略,并且加的字符串必须在括号两边同时出现,如果两边的字符串不一样会造成语法错误,编译不会通过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值