C++中其他形式的字符串字面值

C++中其他形式的字符串字面值

本书前面说过,除 char类型外,C++还有类型 wchar t:而 C++11新增了类型 char16t和 char32 t。可创建这些类型的数组和这些类型的字符串字面值。对于这些类型的字符串字面值,C++分别使用前缀L、u和U表示,下面是一个如何使用这些前缀的例子:

wchart titlel]=L"Chief Astrogator";//w char string
charl6_t name[]= u"Felonia Ripova";//char 16 string
char32_t carl]=U"Humber Super Snipe";// char 32 string

C++11还支持 Unicode 字符编码方案 UTF-8。在这种方案中,根据编码的数字值,字符可能存储为 1~4个八位组。C++使用前缀u8来表示这种类型的字符串字面值。
C++11新增的另一种类型是原始(raw)字符串。在原始字符串中,字符表示的就是自己,例如,序列m不表示换行符,而表示两个常规字符–斜杠和 n,因此在屏幕上显示时,将显示这两个字符。另一个例子是,可在字符串中使用",而无需像程序清单 4.8 中那样使用繁琐的"。当然,既然可在字符串字面量包含",就不能再使用它来表示字符串的开头和末尾。因此,原始字符串将"(和)“用作定界符,并使用前缀R来标识原始字符串:
cout << R”(Jim “King” Tutt uses “\n” instead of endl.)“<< \n’;
上述代码将显示如下内容:
Jim “King” Tutt usesn instead of endl
如果使用标准字符串字面值,将需编写如下代码:
cout << “Jim"King” Tutt uses”\n" instead of endl." << ‘\n’;
在上述代码中,使用了\来显示,因为单个表示转义序列的第一个字符。

输入原始字符串时,按回车键不仅会移到下一行,还将在原始字符串中添加回车字符。如果要在原始字符串中包含)“,该如何办呢?编译器见到第一个)“时,会不会认为字符串到此结束?会的。但原始字符串语法允许您在表示字符串开头的"和(之间添加其他字符,这意味着表示字符串结尾的"和)之间也必须包含这些字符。因此,使用R”+(标识原始字符串的开头时,必须使用)+“标识原始字符串的结尾。因此,下面的语句:
cout << R”+(“(Who wouldn’t?)”,she whispered.)+” << endl;
将显示如下内容:
“(Who wouldn’t?)”,she whispered
总之,这使用"+(和)+“替代了默认定界符”(和)"。自定义定界符时,在默认定界符之间添加任意数量的基本字符,但空格、左括号、右括号、斜杠和控制字符(如制表符和换行符)除外。
可将前缀R与其他字符串前缀结合使用,以标识wchart等类型的原始字符串。可将R放在前面,也可将其放在后面,如Ru、UR等。
下面介绍另一种复合类型–结构。

对C++感兴趣的朋友点这里:C/C++课程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值