특히 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); //Done.
정보 감사합니다. unicode환경에서는 한 단계 더 거쳐야하는 것을 몰라 한참 헤매다가 작성자님 덕분에 해결하였습니다^^
답글삭제