티스토리 뷰
목차
반응형
MFC 멀티바이트에서 유니코드 변환 (c++, Char, CString)
『기본적으로 유니코드 환경』에선 wchar_t를 사용하셔야 됩니다.
Char -> CString
1. char* to LPWSTR
1 2 3 4 5 | char text[] = "something"; wchar_t wtext[20]; mbstowcs(wtext, text, strlen(text)+1);//Plus null LPWSTR ptr = wtext; | cs |
2. char* data -> cstring
1 | (LPSTR)data | cs |
3. const char * -> const CString &
1 | CString str= _T("asdf"); | cs |
또는,
1 2 | wchar_t *wszStr; CString str = wszStr; | cs |
4. char [] -> ATL::CStringT<BaseType,StringTraits>
1 | strResult.Format(_T("%s"), psRecText->szResult); | cs |
또는,
1 2 3 4 5 6 7 8 9 | public: void ToCString(CString* outputString) { if(outputString == NULL)outputString = new CString(); outputString->Empty(); for(int i=0;i<cbData;i++) { outputString->AppendChar(pbData[i]); } } | cs |
MFC 멀티바이트 유니코드 변환, Char <-> CString 형변환
5. char [] -> LPCTSTR
1 | LPCTSTR pszCharacterString = CA2W(pChar); | cs |
6. const char [] -> const wchar_t
_T() 매크로 사용
7. const char [] -> const wchar_t *
_T() 매크로 사용
CString -> Char
1. CString -> const char *
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | CString str; //형변환할 문자열이 저장된 CString 변수 wchar_t* wchar_str; //첫번째 단계(CString to wchar_t*)를 위한 변수 char* char_str; //char* 형의 변수 int char_str_len; //char* 형 변수의 길이를 위한 변수 //1. CString to wchar_t* conversion wchar_str = str.GetBuffer(str.GetLength()); //2. wchar_t* to char* conversion //char* 형에 대한길이를 구함 char_str_len = WideCharToMultiByte(CP_ACP, 0, wchar_str, -1, NULL, 0, NULL, NULL); char_str = new char[char_str_len]; //메모리 할당 //wchar_t* to char* conversion WideCharToMultiByte(CP_ACP, 0, wchar_str, -1, char_str, char_str_len, 0,0); | cs |
하지만, CString 대신 wchar_t를 주로 사용하신다면 위와 같은 에러는 가뭄에 콩나듯 발생.
MFC 멀티바이트 유니코드 변환, Char <-> CString 형변환
2. CString -> wchar_t
1 | const WCHAR * pszFoo = (const WCHAR *)strFoo; | cs |
3. CString -> LPWSTR
1 | (LPWSTR)(LPCWSTR)tmp; | cs |
[MFC 멀티바이트 -> 유니코드 변환]
4. LPTSTR -> int
_ttoi 또는 _tstoi 매크로 사용
5. int to LPWSTR
1 2 3 | CString buffer; buffer.Format(_T("%d"), gObjComm->m_iLaserShot[i]); m_cCalendar.SetItemText(i, 1, (LPWSTR)(LPCWSTR)buffer); | cs |
MFC 멀티바이트에서 유니코드 변환 (c++, Char, CString)
반응형