最近改写一个安装引导程序,把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到文件中
参考站点: