Unicode 개발 환경에서, CString과 char* 간의 형변환은 지극히 귀찮은 일이다.
특히 console이 아닌 윈도우 UI기반으로 프로그램을 작성할 때, CFileDialog를
통해 파일이름 및 경로를 획득하고, 이를 이용하여 fopen (사실 다른 입출력
함수 (e.g., CreateFile을 쓰면 해결됨)) 등의 ANSI-C기반의 파일 입출력 함수에
활용하는 경우 위와 같은 형변환이 요구된다.
통해 파일이름 및 경로를 획득하고, 이를 이용하여 fopen (사실 다른 입출력
함수 (e.g., CreateFile을 쓰면 해결됨)) 등의 ANSI-C기반의 파일 입출력 함수에
활용하는 경우 위와 같은 형변환이 요구된다.
Google등으로 검색해보면 많은 방법들이 제시되는데, 그중에서 실제로
정확하게 동작한 것을 남겨둔다. 나중을 위해...
Unicode 환경에서 CString --> char* 형변환은 두 단계로 이루어 진다.
1. CString to wchar_t* 간의 형변환
2. wchar_t* to char* 간의 형변환
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);
원문 글 주소 : http://picomo.blogspot.kr/2012/03/mfc-unicode-cstring-to-char.html
'Programming Language > MFC' 카테고리의 다른 글
MFC + mySQL 사용시 기본 환경설정법 (0) | 2012.10.03 |
---|