C ++에서 문자열 앞의 'L'은 무엇을 의미합니까?


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

없이 작동하는 것처럼 보이지만 L접두사의 목적은 무엇입니까? 그것이 사용되는 방식은 하드 코어 C 프로그래머에게는 의미가 없습니다.


4
C ++을 사용하지 않습니다. 문자열 리터럴에 ASCII 문자 만 포함 된 경우 C ++ / CLI 프로그램에서 선택 사항입니다. 컴파일러는 자동으로 utf-16으로 인코딩 된 문자열로 변환합니다.
Hans Passant 2016 년

7
@Hans : "C ++을 사용하지 않습니다" 어떻게 알 수 있습니까?
궤도에서 가벼움 경주

답변:


138

그것은의 wchar_t확장 문자 세트의 문자. Wikipedia 는이 주제와 C ++ 예제에 대해 약간의 토론을합니다.


87

'L'은 wchar_t일반 문자와 달리 8 비트가 아닌 16 비트 스토리지가 필요함을 의미합니다. 예를 들면 다음과 같습니다.

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

A wchar_t는 단순 문자의 두 배입니다. 매일 사용하는 경우 wchar_t를 사용할 필요는 없지만 windows.h를 사용하는 경우 필요합니다.


28
참고 : 반드시 16 비트 일 필요는 없습니다. OS에 따라 다릅니다.
batman

3
리눅스에서 wchar_t는 32 비트라고 생각합니다
user10607

8
"매일 사용하면 wchar_t를 사용할 필요가 없습니다"는 임의의 판단입니다. 영어를 모국어로 사용하지 않는 사람으로서 항상 사용해야한다고 말할 수 있습니다.
Heyji

18

이는 텍스트가 wchar_t평범한 오래된 char문자가 아닌 문자 로 저장됨을 의미합니다 .

(나는 원래 그것이 유니 코드를 의미한다고 말했다. 나는 그것에 대해 틀렸다. 그러나 유니 코드에 사용될 수있다.)


15

그것은 넓은 문자임을 의미합니다 wchar_t.

1L긴 값과 비슷 합니다.


14

wchar_t좁은 문자 ( char) 대신 넓은 문자 ( ) 의 배열임을 의미합니다 .

유니 코드 문자열 일 필요는 없으며 다른 종류의 문자 일뿐 입니다.


11

L은 넓은 문자열에 사용되는 접두사입니다. 각 문자는 크기에 따라 몇 바이트를 사용합니다 wchar_t. 사용 된 인코딩은이 접두사와 독립적입니다. 다른 답변에서 언급 한 것과 달리 반드시 UTF-16 일 필요는 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.