Javatpoint标志
Javatpoint标志

c++中的原始字符串字面值

什么是字符串字面值?

匿名字符串[1]或字符串字面量是计算机程序源代码中字符串值的字面量。如x = "foo",其中"foo"是一个值为foo的字符串字面值,现代计算机语言经常使用一系列引号字符,正式称为"括号分隔符"。可以通过使用转义序列等技术来避免分隔符冲突的问题(括号的问题),转义序列允许将分隔符包含在字符串中。有许多可用于定义字符串字面量的替代符号,特别是在复杂的情况下。根据问题中的计算机语言,具体的符号会有所不同。但是大多数现代编程语言都遵循一些广泛的规则。

什么是原始字符串文字?

字面量是在程序过程中其值保持不变的变量。另外,原始字符串字面值是不处理像'n, t或' '这样的c++转义字符的字符串。因此,将创建一个以R"开头(并以)结尾的原始字符串字面值。

Raw string Literal的语法:

在这种情况下,分隔符是可选的,可以是除反斜杠(/)、空格()和括号()以外的任何字符。

这些原始字符串字面值通过将其内容精确地编码为原始字符序列来实现字符的连续。

例子:

普通字符串字面值

原始字符串字面值与普通字符串字面值的区别如下:

普通字符串字面值 原始字符串文字
它不需要定义什么。 要以前缀R开头,它需要在括号()中包含一个已定义的行。
它排除/不允许嵌套字符。 它允许/合并嵌套字符的实现。
它结合了每个角色的独特属性,而不忽视它们的特定含义。 它像处理普通文本一样处理所有特殊字符,如n和t,并完全忽略它们。

原始字符串文字的例子:

什么是字符串文本中的成对分隔符?

多种语言允许成对分隔符,其中开始和结束分隔符是不同的。此外,由于它们通常允许嵌套字符串,因此只要分隔符是成对的,就可以插入分隔符,尽管插入未成对的结束分隔符仍然会导致分隔符冲突。例如m4,它使用撇号(')作为结束分隔符,以及PostScript,它使用括号,如(the swift (brown fox))。Tcl同时支持引号(用于插入字符串)和大括号(用于原始字符串),如“The quick brown fox”或“The quick brown fox”。这是因为Tcl中的代码块在语法上等同于字符串字面量,分隔符的成对性质对于实现这一点至关重要。

单引号和双引号在Unicode字符集中以成对(不同的开始和结束)版本提供:

什么是字符串文字中的分隔符冲突?

在使用引号时,如果希望在字符串字面值中表示分隔符本身,则会出现分隔符冲突问题。例如,如果双引号用作分隔符,则不能简单地用双引号的字面量来表示双引号“第二个引号被解释为字符串字面量的末尾,而不是字符串的值,因此您不能写“”或“This is“in quotes”,but invalid.”,因为中间的引号被解释为在引号之外。有几个选项,其中最普遍的是使用转义序列,如"""或"This is "in quotes" and正确转义",然而,还有其他额外的选项。

分隔符冲突的问题不能通过对引号(如Tcl中的大括号)来解决,因为不能简单地添加不平衡的结束分隔符,如。但是,对引号允许嵌套字符串,例如foo bar zork。

转义序列

转义序列有很长的历史,它是表示难以直接表示的字符的一般方法,例如分隔符、非打印字符(如退格)、换行符和空白字符(否则无法在视觉上区分)。因此,它们经常用于字符串字面值。添加转义序列(到单个字符或到整个字符串)称为转义。







Youtube 视频加入我们的Youtube频道:现在加入

反馈


帮助别人,请分享

脸谱网 推特 pinterest

学习最新教程


准备


热门的技术


b .技术/马华






Baidu
map