目前共有4篇帖子。 字體大小:較小 - 100% (默認)▼  內容轉換:台灣正體▼
 
點擊 回復
677 3
【方法】使C++的cout能在不設置locale的情況下正確輸出wchar_t Unicode字符串
一派掌門 二十級
1樓 發表于:2016-7-16 12:51
通過重載cout的<<運算符即可實現。
【程序】
#include <iostream>
#include <Windows.h>

using namespace std;

// 使C++的cout能輸出Unicode字符串
ostream &operator << (ostream &os, const wchar_t *wstr)
{
    if (os == cout)
        WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), wstr, wcslen(wstr), NULL, NULL);
    return os;
}

int main(void)
{
    cout << L"簡體中文abc" << endl << L"¿Cómo estás?" << endl;
    return 0;
}

【運行結果】

一派掌門 二十級
2樓 發表于:2016-7-16 12:55
如果沒有那個重載函數,那麼輸出的只是一堆字母和數字而已:

也就是說默認情況下cout是無法輸出wchar_t字符串的。
 
一派掌門 二十級
3樓 發表于:2016-7-16 12:58
wcout也無法正確輸出wchar_t字符串:
 
一派掌門 二十級
4樓 發表于:2016-7-16 13:07
wcout配合locale也無法正確輸出多語言的字符串:
 

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:677 回複數:3
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2016-7-16 13:07
 
©2010-2025 Purasbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。