Co oznacza „L” na początku łańcucha w C ++?


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

Chociaż wydaje się, że działa bez znaku L, jaki jest cel przedrostka? Sposób, w jaki jest używany, nie ma sensu nawet dla zagorzałego programisty C.


4
Nie używasz C ++. W programie C ++ / CLI jest opcjonalne, jeśli literał ciągu zawiera tylko znaki ASCII. Kompilator automatycznie konwertuje go na ciąg zakodowany w utf-16, który jest internowany w obie strony.
Hans Passant,

7
@Hans: „Nie używasz C ++” Skąd wiesz?
Wyścigi lekkości na orbicie

Odpowiedzi:


138

To wchar_tdosłowne, dla rozszerzonego zestawu znaków. Wikipedia ma małą dyskusję na ten temat i przykłady w języku C ++.


87

„L” oznacza wchar_t, który w przeciwieństwie do zwykłego znaku wymaga pamięci 16-bitowej zamiast 8-bitowej. Oto przykład:

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

A wchar_tjest dwa razy większe niż zwykły znak. W codziennym użytkowaniu nie musisz używać wchar_t, ale jeśli używasz windows.h, będziesz go potrzebować.


28
uwaga: niekoniecznie jest to 16-bitowe. Jest to specyficzne dla systemu operacyjnego.
batman

3
Myślę, że w linux wchar_t jest 32 bity
user10607

8
„W codziennym użytkowaniu nie trzeba używać wchar_t” to dowolne wyrażenie. Jako nie native speaker, mogę powiedzieć, że muszę go używać cały czas ...
Heyji,

18

Oznacza to, że tekst jest przechowywany jako wchar_tznaki, a nie zwykłe stare charznaki.

(Pierwotnie powiedziałem, że oznacza to Unicode. Myliłem się co do tego. Ale można go używać w przypadku Unicode).


15

Oznacza to, że jest to szeroki charakter, wchar_t.

Podobny do 1Ldługiej wartości.


14

Oznacza to, że jest to tablica szerokich znaków ( wchar_t) zamiast wąskich znaków ( char).

To po prostu ciąg znaków innego rodzaju, niekoniecznie ciąg znaków Unicode .


11

L to przedrostek używany do szerokich strun. Każdy znak zajmuje kilka bajtów (w zależności od rozmiaru wchar_t). Używane kodowanie jest niezależne od tego przedrostka. Mam na myśli to, że niekoniecznie musi to być UTF-16, inaczej niż podano w innych odpowiedziach tutaj.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.