字符串前面的'L'在C++中意味着什么?

Kan*_*Yoo 152 c++

this->textBox1->Name = L"textBox1";
Run Code Online (Sandbox Code Playgroud)

虽然它似乎没有L,但前缀的目的是什么?它的使用方式对于核心C程序员来说甚至都没有意义.

Gle*_*eno 121

wchar_t对于扩展字符集,它是一个文字.维基百科对这个主题以及c ++示例进行了一些讨论.

  • 值得一提的是:最近(2020)MS关于c++字符串和字符文字的讨论https://learn.microsoft.com/en-us/cpp/cpp/string-and-character-literals-cpp (4认同)

小智 77

'L'表示wchar_t,与普通字符相反,它需要16位存储而不是8位.这是一个例子:

"A"    = 41
"ABC"  = 41 42 43
L"A"   = 00 41
L"ABC" = 00 41 00 42 00 43
Run Code Online (Sandbox Code Playgroud)

A wchar_t是一个简单的char两倍大.在日常使用中,您不需要使用wchar_t,但如果您使用的是windows.h,则需要它.

  • 注意:它不一定是16位.这是特定于操作系统的. (27认同)
  • “在日常使用中,您不需要使用wchar_t”是任意判断。作为非英语母语人士,我可以说我必须一直使用它... (5认同)
  • 我认为在linux中wchar_t是32位 (3认同)

kar*_*doc 17

这意味着文本存储为wchar_t字符而不是普通的旧char字符.

(我最初说它意味着unicode.我错了.但它可以用于unicode.)


Bo *_*son 13

这意味着它是一个广泛的角色,wchar_t.

类似于1L长期价值.


R. *_*des 13

这意味着它是一个宽字符数组(wchar_t)而不是窄字符(char).

它只是一个不同类型的字符串,不一定是Unicode字符串.


jde*_*aan 10

L是用于宽字符串的前缀.每个字符使用几个字节(取决于大小wchar_t).使用的编码与此前缀无关.我的意思是它不一定必须是UTF-16,这与其他答案不同.