[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; //동적으로 할당했으므로 사용후 반드시 삭제할것.

댓글

이 블로그의 인기 게시물

[gpt/gpt와 대화/번역]이미지생성형ai와 인공지능에 대하여

[AI요약/퍼플렉시티]게임산업의 침체와 한국게임업계의 희망

[C#]CS1612: 'List.this[int]'은(는) 변수가 아니므로 해당 반환 값을 수정할 수 없습니다.