Що означає "L" перед рядком у C ++?


174
this->textBox1->Name = L"textBox1";

Хоча, здається, працює і без L, яка мета префікса? Спосіб його використання навіть не має сенсу для хардкор-програміста C.


4
Ви не використовуєте C ++. У програмі C ++ / CLI необов'язково, якщо літеральний рядок містить лише символи ASCII. Компілятор автоматично перетворює його в закодовану рядок utf-16, яка інтернується в будь-якому випадку.
Ганс Пасант

7
@Hans: "Ви не використовуєте C ++" Як ви знаєте?
Гонки легкості на орбіті

Відповіді:


138

Це wchar_tбуквально, для розширеного набору символів. У Вікіпедії є невелика дискусія з цієї теми та приклади c ++.


87

'L' означає wchar_t, що, на відміну від звичайного символу, вимагає 16-бітового сховища, а не 8-бітового. Ось приклад:

"A"    = 41
"ABC"  = 41 42 43
L"A"   = 00 41
L"ABC" = 00 41 00 42 00 43

A wchar_tвдвічі більший, ніж звичайний char. У щоденному використанні вам не потрібно використовувати wchar_t, але якщо ви використовуєте windows.h, вам це знадобиться.


28
зауважте: це не обов'язково 16 біт. Це специфічно для ОС.
Бетмен

3
Я думаю, що в linux wchar_t є 32 біти
user10607

8
"У щоденному використанні вам не потрібно використовувати wchar_t" - це умовне підключення. Як мовець, що не є носієм англійської мови, я можу сказати, що я повинен користуватися ним постійно ...
Heyji

18

Це означає, що текст зберігається як wchar_tсимволи, а не прості старі charсимволи.

(Я спочатку сказав, що це означає unicode. Я помилявся в цьому. Але це можна використовувати для unicode.)


15

Це означає , що широкий характер, wchar_t.

Подібно до 1Lвеликої цінності.


14

Це означає, що це масив широких символів ( wchar_t) замість вузьких символів ( char).

Це просто рядок символів іншого типу, не обов'язково рядок Unicode .


11

L - приставка, яка використовується для широких рядків. Кожен символ використовує кілька байтів (залежно від розміру wchar_t). Використовуване кодування не залежить від цього префікса. Я маю на увазі, що він не повинен бути обов'язково UTF-16 на відміну від заявлених в інших відповідях тут.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.