原始字面量

作用:1. 对有两重性的字符串进行唯一化 得到你本身想要得到的字符串

                语法:R" ( 你想得到的字符串 )"

             

#include<iostream>
using namespace std;

int main()
{
//1. 
	string a = "abc\n1";
	cout<<a<<endl;
	//输出为 abc
	//       1
	//而我们想要输出是 abc\n1 这个字符串  
//2.
	string b = " abc"1 " ;
	cout<<b<<endl;
	//编译错误 三个引号系统不知道如何处理
	//而我们想要输出结果是 abc"1 却输出不了 
}

系统会将 在字符串里的 \n \t 自动转化为换行符 制表符

所以容易产生二义性   

string a = "abc\\n1";

//可以使用这个方法从而达到输出的结果
//但是也不是特别的简单

所以C++11推出了一个通用的方法 原始字面量 ,即只得到字符串内部的数据 而不进行任何的处理

int main()
{
    string str = R"(abc\n1)";
    string stg = R"(abc"1)";
    string sto = R"(abc"\n1)";

    cout<<str<<endl;
    cout<<stg<<endl;
    cout<<sto<<endl;
}
输出结果为:
abc\n1
abc"1
abc"\n1

轻松的得到了预期效果

作用2 :可以将多行的字符串进行初始化  (并且轻松将字符串多行输出)


int main()
{
    string str = "<html>\
        <head>\
        <title>";
    cout << str << endl;	
}

输出结果:
<html>        <head>        <title>


​

需要  符号 \  来控制 会导致代码可读性较差   

而且 会导致一个问题:

我们想输出该字符串得到分行的结果时 这个方法会非常的低效(甚至无法实现)

int main()
{
    string str = R"(<html>
<head>
<title>)";
    cout << str << endl;	
}
输出结果为:
<html>
<head>
<title>

该方法可以很高效的使一个字符串直接分行输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值