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 
  • Python 2.7获取用户input和操作为不带引号的string
  • Python,单独添加尾随斜杠到目录string,操作系统
  • 如何从Android中的文件读取/写入string
  • PHP号码:小数点只有在需要时才可见
  • 什么是std :: string :: c_str()生命周期?
  • Java中相似string的比较
  • 这是如何打印“你好世界”?
  • 如何sortingstring列表?
  • 如何在Bash中比较string
  • testing一个string的子string?
  • 如何利用C#将每个单词的第一个字符或整个string的第一个字符大写?