Search
Duplicate

C++/ string, wstring 변환

C++은 string 종류가 많고 그 변환이 다 까다로우므로 별도로 정리.
기본 흐름은 string 시리즈끼리 변환이 되고, wstring 시리즈끼리 변환이 쉽게 되는데, 만일 바로 변환이 안 되는 경우 —물론 아예 new를 해서 만드는 방법을 써도 되긴 하지만, 이 경우 delete도 해줘야 하므로 논외로 친다— 는 string이나 wstring으로 변환한 후에 원하는 타입으로 변환하는 단계를 거쳐야 한다.

string wsting

string str = "Hello World"; wstring wstr = L"Hello World"; // wstring을 string으로 변환 string str2(wstr.begin(), wstr.end()); // string을 wstring으로 변환 wstring wstr2(str.begin(), str.end()); cout << "str: " << str << endl; // str: Hello World cout << "wstr to str: " << str2 << endl; // wstr to str: Hello World // wstring을 찍을 때는 wcout을 써야 한다. wcout << "wstr: " << wstr << endl; // wstr: Hello World wcout << "str to wstr: " << wstr2 << endl; // str to wstr: Hello World
C++
복사

string LPSTR, LPCSTR

string str = "Hello World"; // string을 LPSTR, LPCSTR로 변환할 때 0번째의 주소를 넘기면 된다. LPSTR lpstr = &str[0]; LPCSTR lpcstr = &str[0]; // LPSTR, LPCSTR은 string에 그대로 대입 가능하다. string str2 = lpstr; string str3 = lpcstr; // LPSTR은 LPCSTR에 그대로 대입 가능하다. LPCSTR lpcstr2 = lpstr; // error! LPCSTR은 LPSTR에 대입 불가능하다. // 이 경우에는 LPSTR을 string으로 변환한 후에 LPCSTR로 변환해야 한다. // LPSTR lpstr2 = lpcstr; // error! cout << "str to lpstr: " << lpstr << endl; // str to lpstr: Hello World cout << "str to lpcstr: " << lpcstr << endl; // str to lpcstr: Hello World cout << "lpstr to str: " << str2 << endl; // lpstr to str: Hello World cout << "lpcstr to str: " << str3 << endl; // lpcstr to str: Hello World cout << "lpstr to lpcstr: " << lpcstr2 << endl; // lpcstr to lpcstr: Hello World
C++
복사

wstring LPWSTR, LPCWSTR

wstring wstr = L"Hello World"; // wstring을 LPWSTR, LPCWSTR로 변환할 때 0번째의 주소를 넘기면 된다. LPWSTR lpwstr = &wstr[0]; LPCWSTR lpcwstr = &wstr[0]; // LPWSTR, LPCWSTR은 wstring에 그대로 대입 가능하다. wstring wstr2 = lpwstr; wstring wstr3 = lpcwstr; // LPWSTR은 LPCWSTR에 그대로 대입 가능하다. LPCWSTR lpcwstr2 = lpwstr; // error! LPCWSTR은 LPWSTR에 대입 불가능하다. // 이 경우에는 LPWSTR을 wstring으로 변환한 후에 LPCWSTR로 변환해야 한다. // LPWSTR lpwstr2 = lpcwstr; wcout << "wstr to lpwstr: " << lpwstr << endl; // wstr to lpwstr: Hello World wcout << "wstr to lpcwstr: " << lpcwstr << endl; // wstr to lpcwstr: Hello World wcout << "lpwstr to wstr: " << wstr2 << endl; // lpwstr to wstr: Hello World wcout << "lpwcstr to wstr: " << wstr3 << endl; // lpcwstr to wstr: Hello World wcout << "lpwstr to lpcwstr: " << lpcwstr2 << endl; // lpcwstr to lpcwstr: Hello World
C++
복사