我在哪里可以找到C++11类型前缀/后缀的列表?

6

能否有人指向一个完整的语言类型前缀/后缀列表?

前缀示例:

auto s1 (u8"I'm a UTF-8 string.");
auto s2 (u"This is a UTF-16 string.");
auto s3 (U"This is a UTF-32 string.");
auto s4 (R"(RAW \ STRING " )");
auto s5 (L"wide string");
//etc..
//*I've only seen prefixes like this for strings.

后缀示例:

auto n1 = 7.2f;
auto n2 = 7.2d;
auto n3 = 100L;
auto n4 = 10000LL;
//etc..

我所有的搜索都引导我到“自定义用户字面量”的内容。
也许这些实例有一个我不知道的特定名称?

1个回答

9
这些不是“类型”前缀/后缀,而是字面前缀/后缀,因为它们被应用于字面值(字符串字面值、数字字面值等)。它们没有具体的名称,因为它们并不那么有趣☺。
C++11中内置的前缀和后缀包括:
  • 整数:

    • 12U, 12L, 12UL, 12LU, 12LL, 12ULL, 12LLU, 12u, 12uL, 12Lu, 12uLL, 12LLu, 12l, 12Ul, 12lU, 12ll, 12Ull, 12llU, 12ul, 12lu, 12ull, 12llu
  • 浮点数:

    • 1.0f, 1.0F, 1.0l, 1.0L
  • 字符:

    • L'x', u'x', U'x'
  • 字符串:

    • u8"xxx", u"xxx", U"xxx", L"xxx", R"(xxx)", u8R"(xxx)", uR"(xxx)", UR"(xxx)", LR"(xxx)"

特别地,1.0d 不是 C++11 的内置后缀。一些编译器 (如 GCC) 可能会有其他数字后缀的扩展,请参见 C 浮点数表示法


相关词汇语法:

(§2.14.2 整数字面值)

unsigned-suffix: 其中之一

u U

long-suffix: 其中之一

l L

long-long-suffix: 其中之一

ll LL

(§2.14.4 浮点型字面值)

floating-suffix: 其中之一

f l F L

(§2.14.3 字符型字面值)

字符字面值:

' c-char-sequence '
u' c-char-sequence '
U' c-char-sequence '
L' c-char-sequence '

(§2.14.5 字符串字面值)

字符串字面值:

编码前缀opt " s-char-sequenceopt "
编码前缀opt R 原始字符串

编码前缀:

u8
u
U
L


3
提及用户定义字面值将会很好。 - Luc Danton
1
@LucDanton:我相信OP已经知道什么是用户定义字面量(他在倒数第二段提到了它),所以我就不再赘述了。 - kennytm
2
如果其他人对字面量有更广泛的兴趣,并通过搜索遇到了这个问题,那该怎么办? - Luc Danton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接