以下代码文件以CStdioFile向无法向文本中写入中文(用notepad.exe查看不到写入的中文)

CStdioFile file;

file.Open(…);

file.WriteString(_T("abc你好"));//只能写入abc

解决办法:

使用setlocale语句设定区域

#include <locale>//头文件CStdioFile file;

file.Open(…);

char* old_locale = _strdup( setlocale(LC_CTYPE,NULL) );

setlocale( LC_CTYPE, "chs" );//设定

file.WriteString(_T("abc你好"));//正常写入

setlocale( LC_CTYPE, old_locale );

free( old_locale );//还原区域设定

简化处理可以仅使用语句setlocale( LC_CTYPE, "chs" )。

setlocale:函数原形为:char *setlocale( int category, const char *locale );头文件:<locale.h>所支持的操作系统为:ANSI, Win 95, Win NT对于简体中文可以使用如下设置:setlocale( LC_ALL, "chs" ); 为什么一定要调用setlocale呢?因为在C/C++语言标准中定义了其运行时的字符集环境为"C",也就是ASCII字符集的一个子集,那么mbstowcs在工作时会将cstr中所包含的字符串看作是ASCII编码的字符,而不认为是一个包含有chs编码的字符串,所以他会将每一个中文拆成2个ASCII编码进行转换,这样得到的结果就是会形成4个wchar_t的字符组成的串,那么如何才能够让mbstowcs正常工作呢?在调用mbstowcs进行转换之间必须明确的告诉mbstowcs目前cstr串中包含的是chs编码的字符串,通过setlocale( LC_ALL, "chs" )函数调用来完成,需要注意的是这个函数会改变整个应用程序的字符集编码方式,必须要通过重新调用setlocale( LC_ALL, "C" )函数来还原,这样就可以保证mbstowcs在转换时将cstr中的串看作是中文串,并且转换成为2个wchar_t字符,而不是4个。

转载于:https://www.cnblogs.com/XiHua/p/3701108.html

C++ writestring 为什么不能写进中文 CStdioFile向无法向文本中写入中文【一】相关推荐

  1. opencv_python使用cv2.imread()读取中文路径,cv2.imwrite()把图片写入中文路径。

    opencv_python使用cv2.imread()读取中文路径,cv2.imwrite()把图片写入中文路径 定义函数: cv2_imread(path)代替cv2.imread() cv2_im ...

  2. python django mysql写入中文乱码_解决django 向mysql中写入中文字符出错的问题

    之前使用django+mysql建立的一个站点,发现向数据库中写入中文字符时总会报错,尝试了修改settings文件和更改数据表的字符集后仍不起作用.最后发现,在更改mysql的字符集后,需要重建数据 ...

  3. excel调用python编程-使用Python和xlwt向Excel文件中写入中文的实例

    sheet1.write(row_num,0,f) row_num = 1 book.save('demo.xls') 程序执行结果如下: grey@DESKTOP-3T80NPQ:/mnt/e/01 ...

  4. python 去除文本中的中文、中文符号

    删除中文及中文符号的方法,网上很多是python2 的写法,现在将python3的用法记录如下. 知识点 - 正则表达式 - 中文字符库zhon.hanzi,使用命令行pip3 install zho ...

  5. oracle .net 中文,asp.net查出 oracle数据库中的中文乱码问题

    把这两天两次安装IBM2650服务器中出现的问题做一个总结: 1.第一次安装,用IBM的引导盘引导,按步就班的下来,选择语言,做Raid5,选择windows系统等等.安装好windows2003企业 ...

  6. web项目查询mysql中文显示为问号_MySQL 表中的中文显示为问号

    文章目录 1 问题:MySQL数据库中的中文显示为问号 2 解决思路 2.1 查看字符集 2.2 修改my.ini 2.3 重启mysql 2.4 验证字符集生效 3 其他 3.1 修改表的编码格式 ...

  7. “中文问题没商量”之Ant中的中文问题

    在软件系统中,由于存在着各种各样的字符编码问题,比如另我们非常头痛的中文问题.因此,现在趋向于使用UTF-8编码作为软件中通过编码格式,从而可以避免大多数字符编码的问题.本文跟<80前>一 ...

  8. mysql表中的中文是乱码_mysql插入表中的中文显示为乱码或问号的解决方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. 今天在做ssh的博客项目时发现mysql数据库中的中文显示为问号,网上查阅了很多资料,都不是很全,所以我总结一下,供大家参考和自己复习. 1.我的 ...

  9. mac中python怎么打开中文txt文件-mac在matplotlib中显示中文的操作方法

    Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 . 通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方 ...

  10. python json.loads()中文问题-python处理json数据中的中文

    python中自带了处理python的模块,使用时候直接import json即可. 使用loads方法即可将json字符串转换成python对象,对应关系如下: JSON Python object ...

最新文章

  1. 2022-2028年中国聚乳酸降解塑料行业市场运营格局及投资前景趋势报告
  2. 云原生落地难的五个痛点与解决方法
  3. Python-csvkit:强大的CSV文件命令行工具
  4. 关于Unity的入门游戏飞机大战的开发(上)
  5. 信息学奥赛一本通(1158:求1+2+3+...)
  6. C#中常用的几个委托
  7. 迭代器 in C++
  8. 计算机中那些事儿(七):近期拆计算机小感
  9. JavaRebel 2.0 发布,一个JVM插件
  10. GNURadio For Windows编译安装脚本v1.1.1发布
  11. 阿里云无影云桌面工作区详解
  12. 41 - 找出数组中和为sum的 2个数字 | 找出和为sum的连续正整数序列
  13. QT自定义控件设置文本过长时显示点点点……
  14. 自定义View之滚动刻度尺,2018/1/14 05
  15. HC74h595 串行输出再进行串口输出(串行通信嵌套)已测试成功。
  16. 突发!人人影视字幕组14人被抓,用户超800万,涉案金额超1600万!网友炸了:免费的片没了...
  17. 计算机机房线槽,机房机柜布置 机房整改之布线篇~
  18. Spring Boot 菜鸟教程 12 EasyPoi导出Excel下载
  19. 金融数据类——全球股市
  20. Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)

热门文章

  1. 设计模式---观察者模式(C++)
  2. 大型项目用python吗_在大型项目上,Python 是个烂语言吗?
  3. 课程《设计模式之美》笔记之关于java四大特性
  4. 剖析HotSpot的初始化过程
  5. [渝粤教育] 天水师范学院 离散数学 参考 资料
  6. 【Nature论文浅析】基于模型的AlphaGo Zero
  7. 【完美】mac word2016 安装 endnote x9
  8. javascript创建动态表格
  9. BZOJ2681 : 玩游戏2
  10. 【转】Prewitt 算子