Apa arti 'L' di depan sebuah string dalam C ++?

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

Meskipun tampaknya berfungsi tanpa L, apa tujuan dari awalan? Cara ini digunakan bahkan tidak masuk akal bagi seorang programmer C hardcore.

Kang Min Yoo
sumber
4
Anda tidak menggunakan C ++. Ini opsional dalam program C ++ / CLI jika string literal hanya berisi karakter ASCII. Compiler secara otomatis mengonversinya menjadi string yang dikodekan utf-16 yang diinternir dengan cara apa pun.
Hans Passant
7
@Hans: "Anda tidak menggunakan C ++" Bagaimana Anda tahu?
Lightness Races di Orbit

Jawaban:

138

Ini wchar_tharfiah, untuk set karakter yang diperluas. Wikipedia memiliki sedikit diskusi tentang topik ini, dan c ++ contoh.

Gleno
sumber
87

'L' berarti wchar_t, yang, sebagai lawan dari karakter normal, membutuhkan penyimpanan 16-bit daripada 8-bit. Ini sebuah contoh:

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

A wchar_tdua kali lebih besar dari char sederhana. Dalam penggunaan sehari-hari Anda tidak perlu menggunakan wchar_t, tetapi jika Anda menggunakan windows.h Anda akan membutuhkannya.

saidox
sumber
28
Catatan: itu belum tentu 16 bit. Ini spesifik OS.
batman
3
Saya pikir di linux wchar_t adalah 32 bit
user10607
8
"Dalam penggunaan sehari-hari Anda Tidak perlu menggunakan wchar_t" adalah penampung sewenang-wenang. Sebagai penutur bahasa Inggris bukan asli, saya dapat mengatakan bahwa saya harus menggunakannya setiap saat ...
Heyji
18

Ini berarti teks disimpan sebagai wchar_tkarakter daripada charkarakter lama biasa .

(Awalnya saya mengatakan itu berarti unicode. Saya salah tentang itu. Tapi ini bisa digunakan untuk unicode.)

karadoc
sumber
15

Ini berarti karakternya luas wchar_t,.

Mirip dengan 1Lnilai yang panjang.

Bo Persson
sumber
14

Ini berarti array karakter lebar ( wchar_t) bukan karakter sempit ( char).

Ini hanya string dari jenis karakter yang berbeda, tidak harus berupa string Unicode .

R. Martinho Fernandes
sumber
11

L adalah awalan yang digunakan untuk string lebar. Setiap karakter menggunakan beberapa byte (tergantung pada ukuran wchar_t). Pengkodean yang digunakan independen dari awalan ini. Maksud saya tidak harus UTF-16 tidak seperti yang dinyatakan dalam jawaban lain di sini.

jdehaan
sumber