티스토리 뷰

MS Visual C++ 10.0(MS Visual Studio 2010)은 Visual C++ 6.0 과 MFC문법이 많이 달라진 것을 볼 수 있다.

이유는 아마 C표준이 wchar_t(유니코드)를 추가해서 그럴것이다.

그 중 가장 많이 달라졌다고 하는 부분은 텍스트 인코딩 관련 부분이다.

대부분 wchar_t 타입이 많아져 _T("string")을 사용하여 define 된거에 맞게 인코딩이 달라지거나 L"string"이나 "string"을 사용하여 유니코드 혹은 ansi 로 인코딩하게 되는데 가장 대표적인 ansi 타입인 char *과 유니코드 타입인(wchar_t) CString을 볼 수 있다.

char * 타입을 CString 타입으로 캐스팅하는 방법은 간단히 CString _uniString = (char*)_ansiString; 으로 변경할 수 있지만 반대의 경우 바로 캐스팅이 되지 않는다.

그래서 인터넷에서 검색하던 중..(아쉽게도 실제 구현이 잘 안돼서..) 소스를 찾았다. 출처는 기억이 안나서..생략

char* StringToChar(CString& str)
{
    long len =  str.GetLength();
    len = len*2;
    char *szTemp = new char[len+1]; 
    memset(szTemp, 0, len+1);
    USES_CONVERSION;
    strcpy(szTemp, T2A(str));

    return szTemp;
}




을 선언하고 사용하면 된다. 굳이 MFC가 아니더라도 Visual C++에서 사용하면 된다.

자세한 것을 알아보려면 텍스트를 ANSI, UNICODE, UTF-8로 각각 인코딩한다음 헥사코드로 보면 알 수 있다.

댓글
11-24 07:06
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday