c++ linux下輸出中文

來源:互聯網
上載者:User

標籤:locale   wan   details   編譯選項   tps   編譯   []   ring   調試   

同樣,使用的是VS FOR LINUX進行測試。

converting to execution character set: Invalid or incomplete multibyte or wide character

如果編譯時間候遇到該錯誤,則可以加上-finput-charset  -fexecute-charset  g++編譯選項解決。因為linux下gcc希望源檔案是UTF-8格式,所以都改成UTF-8就好了。同時,也可以vs下裝個forceUTF8外掛程式。

搜了下,網上有說使用wprintf的,比如:

wchar_t c= L‘中國‘;
wprintf(L"%c",c);

wprintf(L"%ls\n", L"中華人民共和國");

測試的時候發現wprintf沒有列印任何東西。

有說使用locale loc("chs");的:

locale loc("chs");

wcout.imbue( loc );

也有說setlocale( LC_CTYPE,"chs");的

使用chs編碼,運行時就報異常了,難道都沒測過嗎???

最後還是自己逐個調試解決了。如下:

setlocale(LC_ALL, "zh_CN.UTF-8");wchar_t zh_cn = L‘國‘;wchar_t zh_cns[] = L"中國";wchar_t another_w[sizeof(zh_cns)/sizeof(wchar_t)] = {0};wcscpy(another_w, zh_cns);printf("%ls。。。....%ls。。。%lc\n", zh_cns, another_w,zh_cn);

加上-finput-charset  -fexecute-charset  g++編譯選項或者在VS中把檔案設定為UTF-8帶簽名格式即可。

輸出:

中國。。。....中國。。。國

最後,寬字元的操作函數和char不同,常用的可以參考http://www.cnblogs.com/lidabo/p/6912788.html。

參考:

6915995

43453053

7803495

http://www.cplusplus.com/reference/cstdio/printf/(關鍵時候看官方手冊)

c++ linux下輸出中文

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.