作者共发了4篇帖子。 内容转换:不转换▼
 
点击 回复
480 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)
 

本帖信息

点击数:480 回复数:3
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2016-7-16 13:07
 
©2010-2024 Arslanbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。