我能夠輸出使用這段代碼的單個字符:C寬字符 - 如何使用它們?
#include <locale.h>
#include <stdio.h>
#include <wchar.h>
main(){
setlocale(LC_CTYPE, "");
wchar_t a = L'Ö';
putwchar(a);
}
我如何能適應代碼輸出字符串?
喜歡的東西
wchar_t *a = L"ÖÜÄöüä";
wprinf("%ls", a);
我能夠輸出使用這段代碼的單個字符:C寬字符 - 如何使用它們?
#include <locale.h>
#include <stdio.h>
#include <wchar.h>
main(){
setlocale(LC_CTYPE, "");
wchar_t a = L'Ö';
putwchar(a);
}
我如何能適應代碼輸出字符串?
喜歡的東西
wchar_t *a = L"ÖÜÄöüä";
wprinf("%ls", a);
wprintf(L"%ls", str)
Ooops剛剛閱讀評論:) – 2011-05-22 01:37:14
這是一個有點棘手,你必須知道你的內部wchar_t
爲人刻薄。 (See here稍作討論。)基本上,您應該通過mbstowcs
/wcstombs
以及通過iconv
(從WCHAR_T轉換而來)已知編碼的數據與環境進行通信。
(這裏的例外是Windows,你不能真正與環境進行有意義的通信,但是你可以直接使用Windows API函數以廣泛的版本訪問它,並且可以直接在消息框中編寫寬字符串等。 )
也就是說,一旦你有你的內部寬字符串,你可以將它轉換爲環境的多字節字符串與wcstombs
,或者你可以使用printf("%ls", mywstr);
爲你執行轉換。只要不要忘記在程序開始時致電setlocale(LC_CTYPE, "")
。
wprintf(L「%ls」,a)有什麼問題?它不適合你嗎? – 2011-05-21 23:49:08
呃..謝謝你剛回答我的問題。我在代碼中錯過了L。 – 2011-05-21 23:51:50
很高興提供幫助;-) – 2011-05-21 23:57:49