设为首页 加入收藏

TOP

4.3.5 其他形式的字符串字面值
2013-10-07 15:39:35 来源: 作者: 【 】 浏览:83
Tags:4.3.5 其他 形式 字符串 面值

4.3.5  其他形式的字符串字面值

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

 

C++(www.cppentry.com)11还支持Unicode字符编码方案UTF-8。在这种方案中,根据编码的数字值,字符可能存储为1~4个八位组。C++(www.cppentry.com)使用前缀u8来表示这种类型的字符串字面值。

C++(www.cppentry.com)11新增的另一种类型是原始(raw)字符串。在原始字符串中,字符表示的就是自己,例如,序列\n不表示换行符,而表示两个常规字符-斜杠和n,因此在屏幕上显示时,将显示这两个字符。另一个例子是,可在字符串中使用",而无需像程序清单4.8中那样使用繁琐的\"。当然,既然可在字符串字面量包含",就不能再使用它来表示字符串的开头和末尾。因此,原始字符串将"(和)"用作定界符,并使用前缀R来标识原始字符串:

 

上述代码将显示如下内容:

 

如果使用标准字符串字面值,将需编写如下代码:


 

在上述代码中,使用了\\来显示\,因为单个\表示转义序列的第一个字符。

输入原始字符串时,按回车键不仅会移到下一行,还将在原始字符串中添加回车字符。

如果要在原始字符串中包含)",该如何办呢?编译器见到第一个)"时,会不会认为字符串到此结束?会的。但原始字符串语法允许您在表示字符串开头的"和(之间添加其他字符,这意味着表示字符串结尾的"和)之间也必须包含这些字符。因此,使用R"+*(标识原始字符串的开头时,必须使用)+*"标识原始字符串的结尾。因此,下面的语句:

 
将显示如下内容:
 

总之,这使用"+*(和)+*"替代了默认定界符"(和)"。自定义定界符时,在默认定界符之间添加任意数量的基本字符,但空格、左括号、右括号、斜杠和控制字符(如制表符和换行符)除外。

可将前缀R与其他字符串前缀结合使用,以标识wchar_t等类型的原始字符串。可将R放在前面,也可将其放在后面,如Ru、UR等。

下面介绍另一种复合类型-结构。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.3 string类简介 下一篇4.4.2 C++11结构初始化

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言中如何将结构体 (2025-12-24 22:20:09)
·纯C语言结构体成员变 (2025-12-24 22:20:06)
·C语言中,指针函数和 (2025-12-24 22:20:03)
·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)