使用wofstream写入中文(Unicode)字符时无内容

本文介绍了一个在C++中使用STL库处理中文路径名配置文件的问题及解决方案。通过设置locale为“chs”,成功解决了中文字符无法写入的问题,并讨论了其他语言字符集可能遇到的挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近改写一个安装引导程序,把C#版的写成C++的本地代码,以免用户在未安装.net framework时
无法启动安装,但写入配置文件的时候,发现若路径名称是中文的话,就写不进去,
用的是STL,后来查了查,这个问题很普遍,微软官方有解决方法,关键是一句:
confFile.imbue(std::locale("chs"));
#include <fstream>

void main()
{
 	TCHAR startupPath[MAX_PATH];
	TCHAR confPath[MAX_PATH];
	TCHAR confFullPath[MAX_PATH];
	TCHAR startupFolder[MAX_PATH];

	GetModuleFileName(NULL,startupPath,MAX_PATH);
	GetTempPath(MAX_PATH,confPath);
	GetCurrentDirectory(MAX_PATH,startupFolder);
	wsprintf(confFullPath,TEXT("%s%s"),confPath,configFileName);//设置配置文件全路径名
	
	wofstream confFile;	
	confFile.open(confFullPath,ios::out);	
	confFile.imbue(std::locale("chs"));
	confFile<<startupFolder;
	confFile.close();
}

解决了中文问题,想了想,若是文件夹名称是日文朝鲜文德文法文意大利文怎么办呢?

纠结,估计到时候就不能直接写成字符串了,

得写成byte到文件中

参考站点:

http://support.microsoft.com/kb/q274012/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值