原始字符串字面量

原始字符串字面量(raw string literal)可以横跨多行代码的字符串字面量不需要转义嵌入的双引号,像\t\n这种转义序列不按照转义序列的方式处理,而是按照普通文本的方式处理。如果像下面这样编写普通的字符串字面量,那么会收到一个编译器错误,因为字符串包含了未转义的引号:

string str = "Hello "World"!";    // Error! 

对于普通的字符串,必须转义双引号,如下所示:

string str = "Hello \"World\"!"; 

对于原始字符串字面量,就不需要转义引号了。原始字符串字面量以R"(开头,以)"结尾:

string str = R"(Hello "World"!)" 

原始字符串字面量可以跨越多行代码。例如,如果像下面这样编写普通的字符串字面量,那么会收到一个编译器错误,因为普通的字符串字面量不能跨越多行:

string str = "Line 1
Line 2 with \t";    // Error! 

可使用如下原始字符串字面量来替代:

string str = R"(Line 1
Line 2 with \t)"; 

这也说明,使用原始字符串字面量时, \t转义字符没有替换为实际的制表符字符,而是按照字面形式保存。将str写入控制台得到的输出如下所示:

Line 1
Line 2 with \t 

因为原始字符串字面量以)"结尾,所以使用这个语法时,不能在字符串中嵌入)"。例如,下面的字符串是不合法的,因为在这个字符串中间包含了一个)"

string str = R"(The characters )" are embedded in this string)";    // Error! 

如果需要嵌入)",则需要使用扩展的原始字符串字面量语法,如下所示:

R"d-char-sequence(r-char-sequence)d-char-sequence" 

r-char-sequence是实际的原始字符串。d-char-sequence是可选的分隔符序列,原始字符串首尾的分隔符序列应该一致。分隔符序列最多能有16个字符。应选择未出现在原始字符串字面量中的序列作为分隔符序列。

上面的例子可以改用唯一的分隔符序列:

string str = R"-(The characters )" are embedded in this string)-"; 

在操作数据库查询字符串和正则表达式等字符串时,原始字符串字面量可以令程序的编写更加方便。

时间: 2024-10-05 19:44:17

原始字符串字面量的相关文章

ISO/IEC 9899:2011 条款6.4.5——字符串字面量

6.4.5 字符串字面量 语法 1.string-literal: encoding-prefixopt    "  s-char-sequenceopt  " encoding-prefix: u8 u U L s-char-sequence: s-char: s-char-sequence    s-char s-char: 源字符集中的任一成员,除了双引号 " ,倒斜杠 \ ,或换行字符 escape-sequence 约束 2.毗邻的字符串字面量标记的一个序列不应该同

字符串字面量和逐字字符串面量

1.无后缀的实数字面量是double类型,不是float类型! 2.与c/c++不同,在c#中数字不具有布尔意义. 3.int x=5;if(x)...//x是int类型不是布尔类型. 4.委托是引用类型因此两个委托也可以进行比较,如果两个委托都是null, 或者两者的调用列表中有相同数目的成员,并且调用列表相匹配,那么比较 返回true;

C++11中的小细节--字符串的原始字面量

原始字面量很容易理解,即不进行转义的完整字符串. 最近看了看Python,其中讲到了原始字符串. Both string and bytes literals may optionally be prefixed with a letter ‘r’ or ‘R’; such strings are called raw strings and treat backslashes as literal characters. As a result, in string literals, ‘\U

ES6新语法之---对象字面量扩展、模板字符串(5)

这节课学习ES6中对象字面量扩展和新增模板字符串 第一部分:对象字面量扩展 1.简洁写法 ES6对于对象字面量属性提供了简写方式. 1.1:属性简写 //传统写法 var x = 2, y = 3, o = { x: x, y: y }; //ES6简洁写法 var x = 2, y = 3, o = { x, //属性名和赋值变量名相同时,可简写 y }; 1.2:方法简写 //传统写法 var o = { x: function() { //... }, y: function() { //

JavaScript语言精粹1字符串,对象字面量

字符串 Strings JavaScript没有,字符,类型.仅包含一个字符的,字符串即可. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>testString1</title> <style type="text/css"></style> </hea

Objective-c 字面量

#import <Foundation/Foundation.h> int main (int argc, const char * argv[]){ /** 以下为基本类型字面量举例 */ int a = 10; // 10为一个整型字面量 float f = 0.5f; // 0.5f为一个单精度浮点数字面量 double d = 3.14; // 3.14为一个双精度浮点数字面量 long l = 100000L; // 100000L为一个长整型字面量 char c = 'c'; //

10.typescript-字符串字面量类型

1.字符串字面量类型 字符串字面量类型是用来约束取值只能是某几个字符串中的一个. 1 // html 2 <div id="div">my name is Mr.</div> 1 type name = "wei" | "ze" | "yang"; 2 3 function student(ele:Element, event:name){ 4 return () => { 5 return el

编程语言中的字面量在Objective-C中的举例

关于计算机编程语言中的字面量的介绍可参考:http://baike.baidu.com/view/1208327.htm?fr=aladdin. 下面就介绍Objective-C中的各种常用字面量: #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { /** 以下为基本类型字面量举例 */ int a = 10; // 10为一个整型字面量 float f = 0.5f; // 0.5f为一个

Javascript —— 理解对象字面量

javascript 手记(摘自Javascript中文网): 在javascript中,可以通过构造函数来创建对象,也可以通过对象字面量来创建对象. 在编程语言中,字面量是一种表示值的记法,例如,"Hello world!" 在许多语言中都表示一个字符串字面量(string literal ).JavaScript也不例外,如 5.true.false和null,它们分别表示一个整数.两个布尔值和一个空对象. javascript支持对象字面量,允许使用一种简洁而可读的记法来创建对象