2011-12-05 20:42:23Morris

[筆記] Unicode In C/C++

  1. 專案屬性選擇「使用 Unicode 字元集」。
  2. #include <tchar.h>。
  3. 用 _tmain 代替 main。
  4. 用 TCHAR 代替 char。
  5. 字串前後加上 _T( ),字元前後也加上 _T( )。
  6. 使用 tcsXXX 系列的字串函式取代 strXXX。
  7. 使用 _tXXX 系列的檔案字串函式,各字串函式的 TCHAR 版為何請查閱 MSDN。
http://www.csie.nctu.edu.tw/~skyang/unicodestr.zhtw.htm


#include <tchar.h>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>

int _tmain() {
    wchar_t s[100];
    setlocale(LC_ALL,"");
    int i;
    printf("Input String : ");
    while(fgetws(s, 100, stdin)) {
        for(i = 0; s[i] != 10; i++) { /*10 == end of string*/
            _tprintf(_T("%d %wc\n"), s[i], s[i]);
        }
        wprintf(L"Show String: %s\n", s);
        memset(s, 0, sizeof(s));
        printf("Input String : ");
    }
    system("pause");
}




// 讀檔

#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>

int _tmain() {
    wchar_t s[100];
    setlocale(LC_ALL,"");
    FILE *pFile;
    pFile = _tfopen(_T("in.txt"), _T("r"));
    int i;
    _tprintf(_T("Input String : "));

    while(fgetws(s, 100, pFile)) {
        for(i = 0; s[i] != L'\0'; i++) { /*10 == end of string*/
            _tprintf(_T("%d %wc\n"), s[i], s[i]);
        }
        wprintf(L"Show String: %s\n", s);
        memset(s, 0, sizeof(s));
        _tprintf("Input String : ");   
        _tprintf(_T("\n"));
    }
    system("pause");
}

學生 2013-05-22 11:14:14

不好意思 想請教一下 這種寫法應該是只能用在VC的吧?
gcc可以用嗎?

版主回應
都可以的,你可以試試看。
很久以前寫的,測試了一下讀檔部分,存 .txt 檔好像不太行,存別的檔案(如 .cpp)就可以了。
環境:Code::Blocks
2013-05-22 12:16:03