是的,这是我以前从未见过的东西。在野外发现了以下代码片段(虽然我正在解释,因为我无法访问原始代码):
char str[] = u8R"delim(SomeTextInHere)delim";
任何人都可以告诉我这意味着什么以及C中的等价物是什么?
答案 0 :(得分:5)
我不知道如何将它翻译成C先生,但这只是在一个例子中抛出几乎所有新文字相关的东西。
u8: utf-8 string literal.
R: Raw string literal (no escape characters)
"delim(" ... ")delim": The prefix and suffix of the raw string literals.
They are used as delimiters, and you can write your own.
答案 1 :(得分:2)
C中没有等效物。这是一个结合了两件事的C ++ 11特性。
u8
前缀表示该字符串将以UTF-8编码。 R
前缀表示它是原始字符串文字。组合它们意味着原始字符串将采用UTF-8编码。
原始字符串是一种绕过正则表达式所需的所有转义的方法,以此类推。通常,在正则表达式中,您必须使用许多“\”字符。但这是C / C ++转义字符,所以在字符串文字中,你必须使用“\”代替。原始字符串文字允许您避免这种情况。在原始字符串中,没有转义字符。
原始字符串文字的工作方式如下。正常后跟R
前缀后跟"
。但是直到第一个(
字符的字符都被视为原始字符串的分隔符的一部分。因此,如果您使用R"foo(
启动原始字符串,字符串将继续,直到解析器看到)foo"
。
这样,您可以使用"
,\
以及几乎任何其他字符,只要您选择分隔符即可。分隔符也可以为空,因此R"(some stuff)"
等同于"some stuff"
。它会在看到)"
时结束。