[转]让fstream支持中文路径

 

代码
1 #include <tchar.h>
2 #include <fstream>
3 #include <iostream>
4  using namespace std;
5  int main()
6 {
7  /*方法一:使用_TEXT()宏定义将字符串常量指定为TCHAR*类型*/
8 fstream file;
9 file.open(_TEXT("c:\\测试\\测试文本.txt"));
10 cout<<file.rdbuf();
11 file.close();
12
13 /*方法二:使用STL中的locale类的静态方法指定全局locale*/
14 /*使用该方法以后,cout可能不能正常输出中文,十分蹊跷*/
15 /*我发现了勉强解决的方法:不要在还原区域设定前用cout或wcout 输出中文*/
16 /*否则后果就是还原区域设定后无法使用cout wcout输出中文*/
17 std::local::global(locale(""));//将全局区域设为操作系统默认区域
18 file.open(_TEXT("c:\\测试\\测试文本.txt"));
19 locale::global(locale("C"));//还原全局区域设定
20 cout<<file.rdbuf();
21 file.close();
22
23 /*方法三:使用C函数setlocale,不能用cout输出中文的问题解决方法同上*/
24 setlocale(LC_ALL,"Chinese-simplified");//设置中文环境
25 file.open("c:\\测试\\测试文本3.txt");//可以顺利打开文件了
26 setlocale(LC_ALL,"C");//还原
27 cout<<file.rdbuf();
28 file.close();
29
30 return 0;
31 }
32
33

 

 

直接把代码贴过来好了,这个问题大家应该都遇到过的。

 

posted on 2010-03-25 11:02  笔记  阅读(670)  评论(0编辑  收藏  举报

导航