이 글에서는 C++의 와이드 문자열(std::wstring)을 LPCWSTR로 변환하는 방법을 알아보겠습니다.
LPCWSTR은 Long Pointer to Constant Wide STRing의 약자로, 말 그대로 와이드(wide) 문자로 구성된 상수 문자열에 대한 포인터를 의미합니다. 즉, 와이드 문자열을 와이드 문자 배열 형태로 변환하면 LPCWSTR을 얻을 수 있습니다.
LPCWSTR은 마이크로소프트(Microsoft)가 정의한 타입이므로, 이를 사용하려면 프로그램에 Windows.h 헤더 파일을 반드시 포함해야 합니다.
std::wstring을 LPCWSTR로 변환하기
std::wstring을 와이드 문자 배열 타입의 문자열로 변환하려면 c_str() 함수를 사용하면 됩니다. 이 함수는 wstring을 C 스타일 문자열처럼 만들어 와이드 문자열에 대한 포인터를 반환해 줍니다.
예제 코드
#include<iostream>
#include<Windows.h>
using namespace std;
main(){
wstring my_str = L"Hello World";
LPCWSTR wide_string; // my_str 크기 + 1만큼의 배열 정의
wide_string = my_str.c_str();
wcout << "my_str is : " << my_str << endl;
wcout << "Wide String is : " << wide_string << endl;
}실행 결과
my_str is : Hello World Wide String is : Hello World
참고 사항
c_str()이 반환하는 포인터는 원본 wstring 객체가 소유한 내부 버퍼를 가리키므로, 원본 문자열이 수정되거나 소멸되면 해당 포인터는 더 이상 유효하지 않게 됩니다. 따라서 문자열을 장기간 보관해야 하는 경우에는 별도로 복사해 두는 것이 안전합니다.