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.


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.


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.


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.)


15

Ini berarti karakternya luas wchar_t,.

Mirip dengan 1Lnilai yang panjang.


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 .


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.