c++ 读取TXT 中文乱码

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int CountLines(char *filename)
{
ifstream ReadFile;
int n=0;
string tmp;
ReadFile.open(filename,ios::in);//ios::in 表示以只读的方式读取文件
if(ReadFile.fail())//文件打开失败:返回0
{
return 0;
}
else//文件存在
{
while(getline(ReadFile,tmp))
{
n++;
}
return n;
}
ReadFile.close();
}
string ReadLine(char *filename,int line)
{
int lines,i=0;
string temp;
fstream file;
file.open(filename,ios::in);
lines=CountLines(filename);
if(line<=0)
{
return "Error 1: 行数错误,不能为0或负数。";
}
if(file.fail())
{
return "Error 2: 文件不存在。";
}
if(line>lines)
{
return "Error 3: 行数超出文件长度。";
}
while(getline(file,temp)&&i<line-1)
{
i++;
}
file.close();
return temp;
}
void main()
{
int l;
char filename[256];
cout<<"请输入文件名:"<<endl;
cin>>filename;
cout<<"\n请输入要读取的行数:"<<endl;
cin>>l;
cout<<ReadLine(filename,l);
cin.get();
cin.get();

}

代码在此 求大蛇赐教

看一下文件的编码是不是 UTF-8 格式的,改成 ANSI 格式的试试。
推荐 nodepad++。追问

改了ANSI可以了
但是我是要处理很多文件。。。
难道我要一个个改?
还是有什么办法可以一下子搞定?

追答

如果文件不算太多并且不增加新的文件,使用 文件编码转换批处理工具。
也可以程序转编码,windows下使用 WideCharToMultiByte ,linux 下使用 iconv。过程比较 复杂,
可参考:
http://blog.csdn.net/chenjinxian88/article/details/9159127
http://blog.csdn.net/xinu2009/article/details/6992070

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-16
没问题呀,你打开的是什么文件
相似回答