우오오.. 너무 잘 뜨는데요?

원래는 프로젝트 자체만 그냥 WCHAR(Unicode)로 컨버팅 하려고 했는데, 파일명을 WCHAR로 바꾸니 인수도 WCHAR로 바꿔야 되고, 인수를 WCHAR 로 바꾸다 보니 각종 데이터를 저장하는 변수도 WCHAR로 바꾸고... 더 깊이 들어가서는 네이티브 함수에 가까운 memcpy/memcmp 루틴까지 건드리는 바람에.. 결국 id3 엔진까지 ASCII와 Unicode로 나뉘어져 버렸습니다 -_-;

참 좋은게, 못 읽는 파일이 없을 뿐더러 깨지는 문자가 하나도 없네요. 예전엔 몰랐는데, 이렇게 직접 만들어놓고 보니까 편리할 수가 없습니다 -_-;.. 실용적인 프로그래밍을 위해서는 결국 유니코드는 넘어야 할 산이었네요.

조금 짜증나는(?) 게, ASCII와 Unicode간의 변환은 아예 자체적으로 라이브러리화 시켜놓았으니 그렇다 치는데, 파일 입출력 함수부터 문자열 관련 함수까지 죄다 다 다릅니다. 다른 쓸만한 함수가 있는지는 모르겠는데... 일단 전 이렇게 쓰고 있지요.

strcpy, strcmp, strlen >> wcscpy, wcscmp, wcslen
fopen_s >> _wfopen_s
printf, scanf >> wprintf, wscanf

CString 같은 경우는 굳이 CStringW로 따로 형변환을 해주지 않아도 #ifdef ~ 구문으로 처리를 했는지 알아서 유니코드로 처리하더군요. C#이나 VB에서는 어떤 식으로 돌아가는지는 모르겠습니다만은.. [그때는 유니코드다 ASCII다 뭐다 참 머리아파서 그냥 파일 입출력을 할 수 있다는 것만으로도 감격했던 시절(?)이었습니다]


추가 :: 표준 문자열 함수들을 이용한 겁니다.
UNICODE가 define 되면 자동으로 WCHAR으로 호환되는 함수들입니다. 참조하세요.
fopen -> _tfopen
WCHAR -> LPCTSTR
wcslen, wcscpy, wcscmp -> lstrlen, lstrcpy, lstrcmp
printf -> _tpintf

등등..
 (VC 2005 기준)

댓글을 달아 주세요

  1. BlogIcon 몽쉘 2010/03/05 23:59
     addr - mod/del - rep

    유니코드 문제는 참......
    참다 못한 몽쉘이는 일윈을 깔기로 결심하는데.....[.....?]

  2. BlogIcon 키넷 2010/03/06 00:10
     addr - mod/del - rep

    음 C#이나 VB .NET은 기본적으로 유니코드일걸요?

  3. BlogIcon 影猫 2010/03/06 00:13
     addr - mod/del - rep

    전 뭔지 잘 모르겠습니다만, 편하게 잘 쓰고 계신 것 같네요~

  4. BlogIcon Joshua.J 2010/03/06 12:56
     addr - mod/del - rep

    진리의 윤희코드

  5. BlogIcon Bardisch 2010/03/06 13:35
     addr - mod/del - rep

    윤희코드 만세

  6. BlogIcon 쿠미콘 2010/03/06 14:53
     addr - mod/del - rep

    저에겐 어려운 ㅠㅠㅠㅠㅠㅠㅠ

  7. BlogIcon 칠야 2010/03/07 14:43
     addr - mod/del - rep

    굇수자식
    그러고보니 댓글에있는 이미지는
    모에땅 나오나오는 화의 이미지네

  8. BlogIcon deVbug 2010/03/10 22:43
     addr - mod/del - rep

    조금만 더 공부하셨으면 훨씬 편하셨을텐데..
    Windows 계열 개발을 위한 대유니코드 헤더파일이 있습니다.
    tchar.h 파일을 참고하세요.

    참고로 *nix 에서는 C++ STL의 스트링을 이용하면 되구요.
    *nix C 에서는 가볍게 C++로 넘어가면 됩니다.
    MFC는 확인하신 대로 CString 클래스가 유니코드 처리 됩니다.
    제 기억에 비주얼 베이직은 6.0 때 이미 모든게 유니코드였습니다.
    C#은 당연히 유니코드.

  9. for 2010/07/08 19:05
     addr - mod/del - rep

    strcpy, strcmp, strlen -> lstrcpy, lstrcmp, lstrlen
    fopen_s -> tfopen_s
    printf, scanf -> tprintf, tscanf

    이렇게 사용하면 유니코드의 설정에 따라 소스를 수정할 필요 없음.

< 1 ... 226 227 228 229 230 231 232 233 234 ... 835 > Top