C ++中的L前缀是什么?

我明白它是什么:指定一个string文字为const wchar_t *字符string),而不是const char * (普通的旧字符),但它是如何定义的?

这是某种macros吗? 它是GCC编译器的运营商吗? 这什么?

3 Solutions collect form web for “C ++中的L前缀是什么?”

字面前缀是核心语言的一部分,非常像后缀:

 'a' // type: char L'a' // type: wchar_t "a" // type: char[2] L"a" // type: wchar_t[2] U"a" // type: char32_t[2] 1 // type: int 1U // type: unsigned int 0.5 // type: double 0.5f // type: float 0.5L // type: long double 

请注意, wchar_t与Unicode 无关 。 这是我在这个话题上的一个大肆咆哮 。

它被称为编码前缀

2.14.5string文字[lex.string]

string-literal
| encoding-prefix opts-char-sequenceopt
| encoding-prefix opt R raw-string
encoding-prefix
| u8
| u
| U
| L

并标记一个宽string文字:

11)以L开头的string文字,例如L"asdf" ,是一个宽string文字。 宽string文字的types为“ n const wchar_t数组”,其中n是下面定义的string的大小; 它具有静态存储持续时间,并用给定的字符进行初始化。

这里的L的含义是宽字符: wchar_t 。 带L的string是用16bit而不是8bit编码的,举个例子:

 "A" = 41 L"A" = 00 41 
  • testingR中string中的字符
  • Bashstring差异
  • 在R中拆分一个string向量
  • 如何解决“ConnectionString属性尚未初始化”
  • pythonsstring格式化的许多方法 - 是旧的(将被)不赞成?
  • MySQL中给定子string的最后一个索引
  • 标准化的方式来序列化JSON查询string?
  • Java中的String.format()和hex数字
  • Java多行string
  • 在Python 2.4连接string?
  • jQuery的string包含操作?