学习笔记: wcout输出中文
来源:互联网 发布:风机计算软件 编辑:程序博客网 时间:2024/06/04 10:15
#include "boost/locale.hpp"#include "iostream"#include "string"int main() { //cpp源文件,汉字的存储格式可以是utf8, ansi, ucs16等任意多种 //但是在运行时,一定是如下规则 char zhang_gbk_D5C5[] = "张"; //按照标准。char数组在运行时,存ansi本地编码 wchar_t zhang_ucs16_5F20[] = L"张"; //按照标准。wchar数组在运行时,存unicode本地编码 std::cout << "使用C现场打印:" << std::endl; //成功了,这是最常用的方法 std::cout << "output cout : zhang_gbk_D5C5 = " << zhang_gbk_D5C5 << std::endl; if (!std::cout){ std::cout.clear(); std::cout << "error" << std::endl; } //也打印出东西,但是认为zhang...变量是个整数,而不是字符串 std::cout << "output cout : zhang_ucs16_5F20 = " << zhang_ucs16_5F20 << std::endl; if (!std::cout){ std::cout.clear(); std::cout << "error" << std::endl; } //失败了,而且流坏掉了,需要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){ std::wcout.clear(); std::wcout << "error" << std::endl; } //成功了!wcout居然接收string参数 std::wcout<< L"output wcout : zhang_gbk_D5C5 = " << zhang_gbk_D5C5 << std::endl; if (!std::wcout){ std::wcout.clear(); std::wcout << "error" << std::endl; } 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){ std::cout.clear(); std::cout << "error" << std::endl; } //仍旧失败。看来cout不受locale.ctype影响 std::cout << "output cout : zhang_ucs16_5F20 = " << zhang_ucs16_5F20 << std::endl; if (!std::cout){ std::cout.clear(); std::cout << "error" << std::endl; } //成功了。wcout可以根据当前locale.ctype信息,知道把unicode转gbk std::wcout<< L"output wcout : zhang_ucs16_5F20 = " << zhang_ucs16_5F20 << std::endl; if (!std::wcout){ std::wcout.clear(); std::wcout << "error" << std::endl; } //这次却失败了,但是流没坏掉。这个行为与wcout的行为有关,估计是用都d5cd去做转码,转失败了。 std::wcout<< L"output wcout : zhang_gbk_D5C5 = " << zhang_gbk_D5C5 << std::endl; if (!std::wcout){ std::wcout.clear(); std::wcout << "error" << std::endl; } system("pause"); return 0;}
0 0
- 学习笔记: wcout输出中文
- wcout 输出中文问题
- wcout 输出中文
- wcout无法输出中文
- wcout不能输出中文的解决方法
- 关于 wcout 输出中文的问题
- 关于 wcout 输出中文的问题
- wcout输出时显示不了中文
- wcout 和 wsprintf 输出中文宽字符
- 关于 wcout 输出中文的问题
- wcout输出时显示不了中文
- wcout输出时显示不了中文
- C++_wcout / C_wprintf (wcout输出中文)
- wcout输出时显示不了中文 || 如何使用wprintf和wcout输出汉字
- cout,wcout,printf,wprintf等函数的中文输出问题
- 『C/C++』关于 wcout 输出中文的问题
- wprintf以及std::wcout输出中文的问题
- wcout 输出宽字符
- windows配置tomcat
- 关于双目立体视觉的一些总结(一)
- log
- Netty入门应用
- 2016sdau课程练习专题二 1019
- 学习笔记: wcout输出中文
- C 枚举类型
- socket可读,可写的条件
- Android 仿微信群聊头像
- Mobile phones(二维树状数组)
- 第九周项目一 写出程序的运行结果并理解(3)
- Mybatis最入门---动态查询(foreach)
- ACM2-1019
- android Log管理的一点小看法