C 語言中的寬字串 -- 包含 Unicode
高等 C 語言簡介字串指標與陣列函數結構物件導向記憶體檔案錯誤處理巨集處理C 與組合語言資料結構動態字串動態陣列鏈結串列雜湊表開發環境MakeCygwinMinGWDevC++wxDevC++編譯器gcc 編譯器TinyCC 編譯器LCC 編譯器應用主題CGI 程式GNU 程式視窗程式影像處理練習題訊息相關網站參考文獻最新修改簡體版English |
要在 C 語言中使用 Unicode 字串,假如您用的是 gcc 編譯器或 Linux,您可以使用寬字元 wchar_t 這個形態,以取代 char,然後用對應的函數取代原本的字串函數,以下是常見字串函數的寬字元版對應表。
簡而言之,就是將原本 strXXX() 函數,轉換成 wcsXXX() 函數,然後照著原本的方法使用,只是對象從 char* 改為 wchar_t * 即可,請看下列範例。 程式範例:Unicode 寬字串處理函數檔案:unicode.c #include <stdio.h> #include <locale.h> int main(void) { if (!setlocale(LC_CTYPE, "")) { fprintf(stderr, "Error:Please check LANG, LC_CTYPE, LC_ALL.\n"); return 1; } wchar_t *str1=L"Hi!你好"; // 輸出結果 (範例) printf("str1=%ls\n", str1); // str1=Hi!你好 printf("wcslen(str1)=%d\n", wcslen(str1)); // wcslen(str1)=5 printf("wcschr(str1,%lc)=%d\n", L'好', wcschr(str1, L'好')); // wcschr(str1,好)=4206648 printf("wcswcs(str1,%ls)=%d\n", L"你好", wcsstr(str1, L"你好")); // wcswcs(str1,你好)=4206646 printf("wcsspn(str1,aeiou)=%d\n", wcsspn(str1, L"aeiou")); // wcsspn(str1,aeiou)=0 printf("wcsspn(str1,EFGH)=%d\n", wcsspn(str1, L"EFGH")); // wcsspn(str1,EFGH)=1 printf("address(str1)=%p\n", str1); // address(str1)=00403030 printf("wcssbrk(str1,aeiou)=%p\n", wcspbrk(str1, L"aeiou")); // wcssbrk(str1,aeiou)=00403032 wchar_t str2[20]; wcscpy(str2, str1); printf("str2=%ls\n", str2); // str2=Hi!你好 printf("wcscmp(str1,str2)=%d\n", wcscmp(str1, str2)); // wcscmp(str1,str2)=0 wcscat(str2, L",我是John"); printf("str2=%ls\n", str2); // str2=Hi!你好,我是John return 0; }} 執行結果
來自 jserv 的建議
後記寬字串的處理函數有很多,並不限於上列的函數,幾乎所有具有字串的標準 C 函數都有寬版,關於更多的寬版函數請參考下列網頁。
參考文獻
|
page revision: 9, last edited: 05 Mar 2016 03:22
您好~
最後一行多了一個}
去掉才能用GCC正確編譯
Post preview:
Close preview