下面代码片断读取txt数据,出现乱码?CStdioFile file;
……
while(file.ReadString(str))
{
tempArr.Add(str);
}下面这种方式,乱码问题解决了,可是如何才能读取一行呢?
FILE *fp;
……
char ip[20];
memset(ip,0,sizeof(ip));
int rc;
while(rc=fread(ip,sizeof(char),20,fp))
{
CString cip=ip;
tempArr.Add(cip);
}请问大家,第一种方式的乱码问题怎么解决,而第二种方式如何一次读取一行文本,谢谢!
……
while(file.ReadString(str))
{
tempArr.Add(str);
}下面这种方式,乱码问题解决了,可是如何才能读取一行呢?
FILE *fp;
……
char ip[20];
memset(ip,0,sizeof(ip));
int rc;
while(rc=fread(ip,sizeof(char),20,fp))
{
CString cip=ip;
tempArr.Add(cip);
}请问大家,第一种方式的乱码问题怎么解决,而第二种方式如何一次读取一行文本,谢谢!
看看是不是初始化有问题?2 用fgets读一行文本
================================================== FILE *pSourFile; //指向源文件
CString sSourLine=""; //从源文件中取出的一行 pSourFile = fopen(sFileName,"rt");
if(pSourFile==NULL) {
AfxMessageBox("源文件打开失败!");
return false;
}
while(!feof(pSourFile)){
ReadLine(pSourFile, sSourLine);//读一行
}
}
//读取文件的一行
void CSetEx::ReadLine(FILE *pFile, CString &line)
{
line="";
char ch;
int pos=0;
while(!feof(pFile)){
//Read(&ch,1);
ch = fgetc(pFile);
if(ch=='\r'||ch=='\n')break;
line+=ch;
pos++;
if(line.Find("", 0))
{
ftell(pFile);
}
}
line.TrimRight('\r');
line.TrimRight('\n');
line.TrimRight('\r');
line.TrimRight(0xff); //过滤文件结束符
return;
}
{
return 0;
}
CStringArray strArray;
CString strLine;
while(file.ReadString(strLine))
strArray.Add(strLine);
file.Close();
乱码形如:
°¢
°¢Ìç
°¢ÚÄ·î³Ð
°¡
°¥
°²Åà
已经加了
void inline ReadLineW(FILE *pFile, BSTR &bstr)
{
bstr = NULL;
wchar_t wch;
int pos=0;
BSTR bstrTmp;
while(!feof(pFile)){
wch = fgetwc(pFile);
if(wch==-1) continue;
if(wch==_T('\r')||wch==_T('\n'))break;
bstr+=wch;
bstrTmp+=wch;
pos++;
} return;
}
while(!feof(pSourFile)){
memset(line,0,19);
fgets(line,20,pSourFile);
sSourLine=line;
if(!sSourLine.IsEmpty())
tempArr.Add(sSourLine);
}
}可是:(代码用于过滤)
for(i=beforeArr.GetSize()-1;i>=0;i--)
{ for(j=0;j<tempArr.GetSize();j++)
{
if((beforeArr.GetAt(i))==(tempArr.GetAt(j)))
{
AfxMessageBox(beforeArr.GetAt(i));//分明有很多重复,为什么找不出来,将“==”换成CompareNoCase,beforeArr中的所有的都出来了,狂郁闷
beforeArr.RemoveAt(i);
break;
}
}
}