學習筆記 wcout輸出中文

2021-07-11 09:40:39 字數 1576 閱讀 6817

#include "boost/locale.hpp"

#include "iostream"

#include "string"

int main()

//也列印出東西,但是認為zhang...變數是個整數,而不是字串

std::cout << "output cout : zhang_ucs16_5f20 = " << zhang_ucs16_5f20 << std::endl;

if (!std::cout)

//失敗了,而且流壞掉了,需要clear復位。

//因為流wcout需要把usc16轉為本地的ansi字符集。而取本地ansi字元編碼的時,發現c現場中沒說明

//因此wcout就無法做unicode->gbk的轉換,就失敗了。

std::wcout<< l"output wcout : zhang_ucs16_5f20 = " << zhang_ucs16_5f20 << std::endl;

if (!std::wcout)

//成功了!wcout居然接收string引數

std::wcout<< l"output wcout : zhang_gbk_d5c5 = " << zhang_gbk_d5c5 << std::endl;

if (!std::wcout)

std::cout << "使用本地ansi現場列印:" << std::endl;

//""字串代表本地作業系統預設的現場,一般是chinese_republic of china.936

std::locale loc( std::locale(),"",std::locale::ctype );

std::cout.imbue(loc);

std::wcout.imbue(loc);

//仍舊成功

std::cout << "output cout : zhang_gbk_d5c5 = " << zhang_gbk_d5c5 << std::endl;

if (!std::cout)

//仍舊失敗。看來cout不受locale.ctype影響

std::cout << "output cout : zhang_ucs16_5f20 = " << zhang_ucs16_5f20 << std::endl;

if (!std::cout)

//成功了。wcout可以根據當前locale.ctype資訊,知道把unicode轉gbk

std::wcout<< l"output wcout : zhang_ucs16_5f20 = " << zhang_ucs16_5f20 << std::endl;

if (!std::wcout)

//這次卻失敗了,但是流沒壞掉。這個行為與wcout的行為有關,估計是用都d5cd去做轉碼,轉失敗了。

std::wcout<< l"output wcout : zhang_gbk_d5c5 = " << zhang_gbk_d5c5 << std::endl;

if (!std::wcout)

system("pause");

return 0;

}

關於 wcout 輸出中文的問題

1.cout 場景1 在原始檔中定義 const char str 中文 在 vc 編譯器上,由於windows環境用 gbk編碼,所以字串 中文 被儲存為 gbk內碼,編譯器也把 str 指向乙個包含有 gbk編碼的唯讀記憶體空間 因為是const 用 cout 輸出 str 時,由於中文wind...

Python筆記 輸出中文的方法(字元編碼)

說實話,要搞懂python中字元編碼的所有問題,一定得在實戰中積累經驗才行!在此文章中,我用例項來分析並解決我們經常會遇到的一些問題,我的ide環境為pycharm。coding gbk a 宙斯 aa a.decode gbk print aa 輸出結果為中文 宙斯 在後面的示例中不再特別說明 示...

中文分詞jieba學習筆記

四 詞性標註 五 並行分詞 六 返回詞語在原文的起止位置 注意 hmm模型 隱馬爾可夫模型 可以識別新詞 jieba.load userdict filename filename為自定義詞典的路徑 在使用的時候,詞典的格式和jieba分詞器本身的分詞器中的詞典格式必須保持一致,乙個詞佔一行,每一行...