C++基础(十八)区域设置、locale、中文乱码、中文不输出 您所在的位置:网站首页 c语言打印unicode C++基础(十八)区域设置、locale、中文乱码、中文不输出

C++基础(十八)区域设置、locale、中文乱码、中文不输出

2024-07-17 00:19| 来源: 网络整理| 查看: 265

在C++程序中,尤其是新手,在涉及到打印/输出字符串的时候,经常莫名其妙遇到乱码或者不输出的问题。

如果是在windows系统上编程,更是如此。不管是CFile还是CStdioFile,莫名其妙就输出不了或者输出的是乱码。

如果只是想要解决输出问题,很简单,很多文章直接让setlocale(LC_ALL, "")、setlocale(LC_CTYPE, "")、setlocale(LC_ALL, "chs")、setlocale(LC_ALL, "zh_CN")等等,反正就是setlocale,最后发现真的可以。可是真的了解具体含义吗?如果软件是跨区域/国家的,一个setlocale可能确实解决了你的这个乱码问题,但是也许会给别人带来灾难。

首先,setlocale属于C语言的函数,在C++中尽量少用,C++针对国际化有专门的解决方案,且更加灵活。

C++的国际化是通过std名称空间下的locale类实现的,其对外接口比较简单,如下:

所有输入输出流,都有其对应的locale,可以通过getloc获取,再调用locale的成员函数name,就可以获取locale的名字。请看代码(vs2019):

#include int main() { using namespace std; cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有