fstream与中文路径,容易遗漏的问题

fstream与中文路径,容易遗漏的问题
当使用fstream(或ifstream或ofstream)打开中文路径的文件时,默认是会打开失败。
于是,网上有很多解决办法。
主要就是以下两种:
C++风格一些:
          std  :: string  file_path  =  "C:\\中文路径文件 .txt "  ;
          std  :: locale  old_locale  =  std  :: locale  ::  global (  std  :: locale  (  "" ));// 设置
          std  :: ifstream  conf_file (  file_path  . c_str  ());
          std  :: locale  ::  global (  old_locale  );// 还原
         // ... 对文件的操作

C风格一些:
          std  :: string  file_path  =  "C:\\中文路径文件 .txt "  ;
         char  res  setlocale (  LC_ALL  , "Chinese-simplified"  );  // 设置 
          std  :: ifstream  conf_file (  file_path  . c_str  ());
          res  setlocale  (  LC_ALL ,  "C"  );  //  还原    
但是,在某些没有安装“东亚语言支持包”的电脑上,以上“设置”的那行代码就不会如你所想了。
XP系统下为,
如果这里没有打钩。(用户那确实出现了没有打钩,但windows的界面是中文的情况。)
上面C++风格的“设置”代码就会抛出异常。C风格的代码就会返回NULL。
解决方案:
1、打钩。放入xp的安装盘,应用。windows就会自动安装”东亚语言支持“。
2、代码中加入异常捕获(如果是C++风格)

你可能感兴趣的:(fstream与中文路径,容易遗漏的问题)