阅读(3486) (10)

字符串字面量和类型

2022-05-11 14:44:51 更新

字符串文字用双引号或单引号("foo"or 'bar')编写,它们也可以分成多个连续的部分(相当于),这在处理长字符串时很有帮助。它们并不意味着 C 中的尾随零;代表三个字节,而不是四个。与整数文字一样,它们的类型可能会有所不同,但它们可以隐式转换为, ..., ,如果它们适合,则可以转换为和。"foo" "bar""foobar""foo"bytes1bytes32bytesstring

例如,字符串文字在分配给类型时以其原始字节形式解释。bytes32 samevar = "stringliteral"bytes32

字符串文字只能包含可打印的 ASCII 字符,即 0x20 .. 0x7E 之间的字符。

此外,字符串文字还支持以下转义字符:

  • \<newline>(转义一个实际的换行符)
  • \\(反斜杠)
  • \'(单引号)
  • \"(双引号)
  • \n(新队)
  • \r(回车)
  • \t(标签)
  • \xNN(十六进制转义,见下文)
  • \uNNNN(unicode转义,见下文)

\xNN采用十六进制值并插入适当的字节,同时\uNNNN采用 Unicode 代码点并插入 UTF-8 序列。

笔记

在 0.8.0 版本之前,还有三个额外的转义序列\b:\f和\v. 它们通常以其他语言提供,但在实践中很少需要。如果您确实需要它们,它们仍然可以像任何其他 ASCII 字符一样分别通过十六进制转义符插入,\x08即\x0c 和。\x0b

以下示例中的字符串长度为 10 个字节。它以换行字节开头,后跟双引号,单引号和反斜杠字符,然后(不带分隔符)字符序列abcdef。

"\n\"\'\\abc\
def"

任何不是换行符的 Unicode 行终止符(即 LF、VF、FF、CR、NEL、LS、PS)都被视为终止字符串文字。换行符仅在字符串文字前面没有 . 时才终止\。