[MFC]CString char배열로 복사 및 변환
MFC에서 많이 사용하는 CString는 사용하기는 편리하나 c코드를 이용해 무언가를 하려면
char배열형으로 변환 할수 밖에 없는데 이때 문제가 많이 발생한다.
특히 유니코드 문자일 경우는 일반적인 방법으로 문자열의 변환이나 카피가 불가능하다.
몇가지방법을 검색해본것중에 변환으로 하는것들은 하나도 되는 것이 없었으므로 변환은 일반적인 케스팅에 의한 변환으로는 포인터로 전달되는 경우 제대로된 결과값을 얻을수없다.
그러니 제일 좋은 방법은 복사해서 사용하는 것이라고 할수있겠다.
//코드 유니코드 문자열일 경우
char* szString;
CString strString;
int nLength= strString.GetLength();
szString = new char[nLength]; //길이가 안맞을 경우 문제가 발생할수 있으므로 크기만큼할당한다.
WideCharToMultiByte(CP_ACP,0,(LPCWSTR)strString,nLength,szString,nLength,NULL,NULL);
........(중략)
delete[] szString; //동적으로 할당했으므로 사용후 반드시 삭제할것.
댓글
댓글 쓰기