기타

MFC에서 CString -> std::string 변환 오류

이야기하는 남자 2022. 1. 10. 23:20
728x90
MFC에서 CString -> std::string 변환 오류
이 포스트는 이전 블로그에서 이전된 포스트입니다.

요약 :

VS2005 부터 언어 설정이 MultiByte에서 Unicode로 기본 셋팅이 변경됨.

 

MultiByte(이전의 경우)에서는 CString, CStringA, string, wstring 모두 인식 및 호환이 잘되지만,

Unicode의 경우 string은 char, Cstring TCHAR로 되어 호환에 문제가 있음..

 

즉 아래의 경우 형식 캐스팅이 실패함

string a = (string)samplecstring;   // samplecstring = CString 객체

 

아래와 같이 사용 필요

wstring a = (wstring)samplecstring;

 

혹은

string -> wstring -> Cstring 방식의 변경 필요. (반대로도 동일)

 

 

 

Ex.

std::string -> CString

1
2
string str_tmp = "contents";
CString cstr_tmp = str_tmp.c_str();                            
cs

 

CString -> wstring

1
2
CString cstr_tmp("wow");
wstring wstr_tmp = (wstring)cstr_tmp;                              
cs

 

728x90