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

http://blog.csdn.net/nickwar/article/details/5610521

最近改写一个安装引导程序,把C#版的写成C++的本地代码,以免用户在未安装.net framework时
无法启动安装,但写入配置文件的时候,发现若路径名称是中文的话,就写不进去,
用的是STL,后来查了查,这个问题很普遍,微软官方有解决方法,关键是一句:
confFile.imbue(std::locale("chs"));
  
  
  
  
[cpp] view plain copy
  1. #include <fstream>  
  2.   
  3. void main()  
  4. {  
  5.     TCHAR startupPath[MAX_PATH];  
  6.     TCHAR confPath[MAX_PATH];  
  7.     TCHAR confFullPath[MAX_PATH];  
  8.     TCHAR startupFolder[MAX_PATH];  
  9.   
  10.     GetModuleFileName(NULL,startupPath,MAX_PATH);  
  11.     GetTempPath(MAX_PATH,confPath);  
  12.     GetCurrentDirectory(MAX_PATH,startupFolder);  
  13.     wsprintf(confFullPath,TEXT("%s%s"),confPath,configFileName);//设置配置文件全路径名  
  14.       
  15.     wofstream confFile;   
  16.     confFile.open(confFullPath,ios::out);     
  17.     confFile.imbue(std::locale("chs"));  
  18.     confFile<<startupFolder;  
  19.     confFile.close();  
  20. }  

 

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

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

得写成byte到文件中

 

参考站点:

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


你可能感兴趣的:(使用wofstream写入中文(Unicode)字符时无内容)