C++无法向文本中写入中文问题

真正解决VScode C\C++中文路径无法运行问题 真正解决VScode C\C++中文路径无法调试问题 之前一直深受这个问题困扰,只要路径名称存在中文就会调试报错,显示无法找到目标文件,后来看了好多解答,都说没办法从根本上解决。 既然没有人能解答我,只好自己想办法。然后就想出来办法了 起因是发现按下调试的时候,exe文件可以自动生成,也就是说编译的时候是可以出现中文的,问题出现在运行时,由于默认生成的exe文件是“《原先的源文件名称》. exe”,就是exe中出现中文导致无法调试的 问题就在这里 生成了含有中文路径的exe,用过文本编辑器+DOS命令gcc 阅读详情

在写CSV文件的时候,发现无法写入中文。排查发现是字符区域设定的问题。

原因解释:

因为在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个。

 

实现代码:

	//读取区域设定
	char* old_locale = _strdup(setlocale(LC_CTYPE, NULL));
	//设定“简体中文”区域
	setlocale(LC_CTYPE, "chs");
	//创建文件并以文本方式打开
	CStdioFile csdioFile;
	if (!csdioFile.Open(_T("D:\abc.csv"), CFile::modeCreate | CFile::modeReadWrite | CFile::typeText))
	{
		csdioFile.Close();
		return;
	}
	//写入简体中文数据
	csdioFile.WriteString(_T("我是一条测试语句"));
	csdioFile.Close();
	//恢复区域设定
	setlocale(LC_CTYPE, old_locale);
	free(old_locale);

 

SQLite 中文写入失败问题总结 本文深入剖析了SQLite中文写入失败问题的本质原因,并提供了完整的解决方案。 阅读详情

相关推荐

C++对中文文本文件进行词频统计及排序

C++对中文文本文件进行词频统计及排序欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出...

C++对中文文本文件进行词频统计及排序 3140

C++ 往文本文件中写中文 参考示例

C++ 往文本文件中写中文 参考示例

懒人一个 670

基于 MeloTTS.cpp 的轻量级的纯 C++ 文本转语音(TTS)库

是一个轻量级的纯 C++ 文本转语音(Text-to-Speech,TTS)库,由 MyShell.ai 开发并发布。它基于 MeloTTS 项目,支持多种语言的语音合成,包括英语、中文(混合英语)以及即将支持的日语等。

培根芝士的专栏 2027

Mysql C++读写中文数据

使用C++向Mysql写入中文的学习文档

qq_34790664的博客 869

C++ libxml 中文问题

c++ 中使用libxml中操作中文字符的时候出现各种写入出错、读出乱码等问题,经过半天的折腾,写个笔记: 首先明确下边几个事情就很容易知道问题在哪了: 1、cpp 文件中出现的中文字符串常量都会被保存成ansi格式,而gb2312格式可以理解为ansi格式的一个子集。(在中文和日文操作系统里生成的(txt和xml)文件的编码虽然都是ansi,但是,在简体中文系统下,ansi 编码代表

yangyihongyangjiying的专栏 1980

树莓派4B+Ubuntu22.04+思岚RPLIDAR C1激光雷达应用

树莓派+Ubuntu22.04+思岚RPLIDAR C1激光雷达简单应用

techfuture的博客 3707

C++里Ofstream写文件的中文问题

说实话,这个问题很早就遇到,但是一直没有搜集比较完备的解决方法。这次把问题和解决方法都记录下来,以备来日查阅。 问题1:中文路径问题导致文件打开失败。 通常是因为在调用fstream的open方法时,系统内部调用mbstowcs_s进行文件名转换,而mbstowcs_s依赖于程序的本地化设置(locale系列函数设置)。 程序启动时默认设置为LC_ALL="C"。而要正确打开中文文件名的文件...

445822357 2400

ADS RFpro 射频阻抗仿真步骤

导入器件后,在库里面选取器件的对应模型,如图所示我们选取10pf 系统自带的村田模型。选取网络上的器件,拖入到下面component Models。导入成功后,截取需要仿真的区域(不截取仿真时间会非常长),可以生成对应如下原理图,通过原理图继续调整仿真。图上找到需要仿真链路上的网络,右键设置为信号。的叠层信息,按照PCB板厂提供信息填写完整。选择仿真的频率范围和频点数,生成如下图的RFPro仿真界。,然后再把GND也添加到下面。按图设置截取需要仿真的部分。添加成功后 网络就有了,15 双击run开始仿真。

m0_72954480的博客 3217

c++读取和写入ini文件,中文

c++读取和写入ini文件,中文

xie__jin__cheng的博客 514

别再手动算重量了!用C++给UG/NX写个自动计算零件质量与质心的插件(附完整源码)

本文详细介绍了如何使用C++为UG/NX开发智能质量分析插件,实现零件质量与质心的自动计算。通过结合NXOpen和UF_MODL API,设计高效的数据结构和批量处理机制,大幅提升机械设计效率。文章包含完整源码和实用技巧,帮助工程师告别手动计算,适用于复杂装配体的自动化工程计算。

weixin_30247307的博客 136

三维重建之条纹投影结构光(三)——相高模型标定

接上面两文: 三维重建之条纹投影结构光(一)https://blog.youkuaiyun.com/beyond951/article/details/123361852?spm=1001.2014.3001.5501三维重建之条纹投影结构光(二)——四步相移+三频外差法https://blog.youkuaiyun.com/beyond951/article/details/123769596?spm=1001.2014.3001.5501接下来对相高模型进行标定,其推导过程如下图所示 ...

beyond951的博客 4878

mbstowcsz 转化引起 中文乱码问题

用 wtl Cstring 中的转化函数解决 static int __cdecl _mbstowcsz(wchar_t* wcstr, const char* mbstr, size_t count){ if (count == 0 && wcstr != NULL)  return 0;  int result = ::MultiByteToWideChar(CP_ACP, 0, mbstr,

无限天空 4409

计算机导论期末知识点及试题总结 [近三万字总结 · 全]

计算机网络:计算机网络是利用通信线路连接起来相互独立的计算机的集合,其主要目的是实现数据通信和资源共享。 计算机病毒:破坏计算机功能或数据,影响计算机使用,并能自我复制的一组计算机指令或程序。 操作系统:操作系统是由程序和数据结构组成的大型系统软件,它负责计算机的全部软硬件的资源分配,调度和管理,控制各类程序的正常执行,并为用户使用计算机提供良好的环境。 高速缓冲储存器(Cache):位于cpu和内存之间的储存器,其特点是速度快,目的是是储存器的速度与cpu的速度相匹配。 总线:若干信号线的集合,是

这个人好有趣....hh 1万+

android 文件读写exlc,TXT文件中写入中文

程序:CStdioFile file;file.Open(szDir,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite);char* old_locale = _strdup(setlocale(LC_CTYPE,NULL) );setlocale( LC_CTYPE, "chs");//设定//file.WriteStrin...

weixin_42548874的博客 382

LiteratureReading:[2022] Reformer: The Efficient Transformer

所属机构:加州大学伯克利分校(U.C. Berkeley)和谷歌研究(Google Research)。电子邮件:kitaev@cs.berkeley.edu所属机构:谷歌研究(Google Research)。电子邮件:lukaszkaiser@google.com所属机构:谷歌研究(Google Research)。电子邮件:levskaya@google.com大型Transformer模型在许多任务上通常能够达到最先进的结果,但训练这些模型可能非常昂贵,尤其是在处理长序列时。

有朋自远方来,不亦乐乎。 1233

YOLOv8改进,YOLOv8主干网络替换为ShuffleNetV2

ShuffleNet V2的设计原则:1.减少内存访问成本:通过优化数据传输路径,减少内存访问延迟,提高整体运算速度。2.考虑平台特性:针对不同硬件平台的特性进行优化设计,确保在目标平台上的高效运行。3.结构简洁高效:采用简洁而高效的模块设计,降低计算复杂度,同时保持或提升模型的预测准确性。下图,以四种不同计算复杂度水平下的准确性(在ImageNet验证集上的分类),速度和FLOPs的测量结果。(a, c) 为GPU结果,批量大小为8。(b, d) 为ARM结果,批量大小为1。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1567

CStdioFile的Writestring无法写入中文的问题

解决UNICODE字符集下CStdioFile的Writestring无法写入中文的问题2009-12-01 23:11以下代码文件以CStdioFile向无法向文本中写入中文(用notepad.exe查看不到写入的中文)CStdioFile file;file.Open(…);file.WriteString(_T("abc你好"));//只能写入abc解决办法

ljz888666555的专栏 9621

【OpenClaw企业级智能体实战】第16篇:电商“龙虾”掘金记:用OpenClaw实现小红书/抖音/淘宝全自动矩阵运营(2026实测版)

2026年,OpenClaw(小龙虾)已成为电商运营的核心效率工具——从公众号文案3分钟生成到TikTok爆款视频1小时复刻,从多平台内容同步到自动比价加购,彻底重构了电商运营的工作模式。本文基于真实商业案例(元岳科技、TikTok跨境卖家、淘宝MCP工具),系统拆解电商智能体的落地路径:先详解OpenClaw在电商场景的核心原理与变现模式(代部署、模板售卖、轻定制、内容套利),再提供阿里云/本地双部署方案,完整实现小红书/抖音/淘宝的自动化运营(热点抓取、内容生成、多平台分发、数据分析)。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2300

解决UNICODE字符集下CStdioFile的Writestring无法写入中文的问题

<br />以下代码文件以CStdioFile向无法向文本中写入中文(用notepad.exe查看不到写入的中文)<br />CStdioFile file;<br />file.Open(…);<br />file.WriteString(_T("abc你好"));//只能写入abc<br />解决办法:<br />使用setlocale语句设定区域<br /><br /> #include <locale>//头文件<br /> CStdioFile file;<br />file.Open(…);

fengyan1_81的专栏 436

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

在MFC中,如何将Unicode的CString中文字符写入文本文件TXT中

http://topic.youkuaiyun.com/u/20091207/12/2379a9e4-2f92-4f3e-9db5-59e5f656f78f.html 在看了这个论坛后,我也想尝试一下,如何把Unicode中文写到txt文件中。 首先请看这篇字符转码的文章:http://blog.youkuaiyun.com/zhoujielunzhimi/article/details/8082286 很明显,我

周洁伦之谜_相信我 9523

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

gstreamer使用opencv在视频中写入中文

文章目录安装freetype2与中文环境makefile编写CvText.cppCvText.htools.cpptools.h如何在gstreamer中,向视频画面写入中文 这几天有研究下,怎么在gstreamer中通过opencv来向视频中写入中文;下面就写一下实现过程吧。 原本OpenCV只能向视频画面中写入英文字符,本文结合第三方工具freetype2 安装freetype2与中文环境 s...

zhaoyun_zzz的专栏 2712

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

关于C | C++读取中文文本文件的问题

论如何读取中文 我遇到的问题是将数据放在了.txt文件中,然后在C++中读取的时候出现了乱码,查了一会基本上都是关于宽字符的问题。 出现这种读取错误是因为编码的问题,文本文件一般默认是UTF编码,中英文的宽度不一定相同,这个时候就需要将文本另存,然后在保存前找到编码选项: 改成ANSI编码后保存,基本上就没问题了。 ...

ZG____的博客 3724
上一篇: C++调用默认程序打开文件
下一篇: C++获取IMapControl2Ptr中的所有图层信息并加载到CComboBox控件中
acngiser
博客等级 码龄15年 118粉丝 214原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值