C++

C++) 문자 자료형 const WCHAR* , const wchar_t*, wstring

나무늘보섬 2024. 11. 6. 18:35

const WCHAR* 와 const wchar_t*는 실질적으로 같은 것

wstring은 문자열 관리에 적합한 문자열로 복사, 비교, 연산 다 가능

 

더보기

예시 코드

 

////////////////////////////////////////////////////////////////////////////////

// wchar_t* , WCHAR*

const wchar_t * cstr = L"hello";

 

 

////////////////////////////////////////////////////////////////////////////////

// wstring

std::wstring wstr = L"Hello";

wstr += L", World!";

 

 

////////////////////////////////////////////////////////////////////////////////

// wchar_t*  ->  wstring 변환 

const wchar_t* cstr = L"Hello";

std::wstring wstr(cstr);

 

////////////////////////////////////////////////////////////////////////////////

// wstring  ->  wchar_t*  변환

std::wstring str = L"World";

const wchar_t* newStr = str.c_str();

 

※ 추가로 L" "을 문자열에 붙이는 이유

- L" "을 붙이지 않을 경우, const char * 로 간주하기 때문에 wchar_t* 와 같은 유니코드 문자열을 사용하는 wstring을 사용할 때는 붙여야한다.

- 영어 이외의 한국어와 같은 다국어를 문자열로 사용할 때는 L" "을 붙여 wchar_t* 형으로 쓴다. (영어일 때도 사용함)

더보기

// 예시코드 -> from ChatGPT

std::wstring str1 = "Hello"; // 오류 발생 (일반 문자열 리터럴은 char* 타입)

std::wstring str2 = L"Hello"; // 올바름 (유니코드 문자열 리터럴은 wchar_t* 타입)

 

string과 wstring 변환

더보기

// 예시코드 

std::string str = "Hello";

std::wstring wstr(str.begin(), str.end()); // string -> wstring 간단 변환