百度空间 | 百度首页 
 
查看文章
 
VC2005(英文版)处理文件名为中文的文件
2008-04-29 10:28

老问题了,今天才知道怎么解决,不过还不知道所以然,希望知道的能够补充上来。

在用VC2005(E文)处理文件名为中文的文件时,总是不能够打开文件,以前总是把用一个wstring类型的字符串来保存文件名,可以正常处理,但是这有个弊端,就是不能够自己输入文件名(起码用cin实现不了)。如下:

解决1:wstring fileName = L"呵呵.txt";

fstream fin;

fin.open(fileName.c_str(),ios_base::in);

while(getline(fin,content))

cout << content << endl;

今天又遇到这个问题了,上网查了资料,发现是代码页的问题,比如你要打开当前路径下的 《呵呵.txt》文件,则需要如下写:

解决2:

string fileName;

cout << "输入文件名" << endl;

cin >> fileName;

locale loc1 = std::locale::global(std::locale(".936"));//设置代码页为简体中文,936是简体中文的代码页。

fstream fin;

fin.open(fileName.c_str(),ios_base::in);

std::locale::global(std::locale(loc1));//恢复原来的代码页

string content;

while(getline(fin,content))

cout << content << endl;

如上就实现了在VC2005(E文)下读文件名为中文的文件操作。

得出了如下结论:

1:VC2005(E文)默认的代码页不是简体中文,应该是英文的

2:在默认情况下,只要打开文件后就可以处理文件内容为中文的文件

    解决1中用wstring存放文件名,实现了打开,然后就可以读取了

   解决2在设置简体中文代码页后就可以打开了,然后又恢复为默认的,就可以读取0了,但是为什么不恢复为默认代码页,在打开文件后就不能够读取了呢??

暂时想到这些了,有补充的欢迎补充。

ps:windows是以 unicode为默认编码方式的,所以对含有中文名字的文件来说,必须要wstring 来表示文件名,否则的话就找不到文件,自然打不开了。


类别:c/c++ | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu