2011-05-21 19 views
1

我能夠輸出使用這段代碼的單個字符: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); 
+3

wprintf(L「%ls」,a)有什麼問題?它不適合你嗎? – 2011-05-21 23:49:08

+0

呃..謝謝你剛回答我的問題。我在代碼中錯過了L。 – 2011-05-21 23:51:50

+0

很高興提供幫助;-) – 2011-05-21 23:57:49

回答

2
wprintf(L"%ls", str) 

+0

Ooops剛剛閱讀評論:) – 2011-05-22 01:37:14

0

這是一個有點棘手,你必須知道你的內部wchar_t爲人刻薄。 (See here稍作討論。)基本上,您應該通過mbstowcs/wcstombs以及通過iconv(從WCHAR_T轉換而來)已知編碼的數據與環境進行通信。

(這裏的例外是Windows,你不能真正與環境進行有意義的通信,但是你可以直接使用Windows API函數以廣泛的版本訪問它,並且可以直接在消息框中編寫寬字符串等。 )

也就是說,一旦你有你的內部寬字符串,你可以將它轉換爲環境的多字節字符串與wcstombs,或者你可以使用printf("%ls", mywstr);爲你執行轉換。只要不要忘記在程序開始時致電setlocale(LC_CTYPE, "")

相關問題