如何在C++文件操作是判断是否到了每一行的结尾?
我想从TXT中读取数据,但是数据长短个数不一样,我要确定每一行为一组数据。所以想判断是否到了每一行的结尾。...
我想从TXT中读取数据,但是数据长短个数不一样,我要确定每一行为一组数据。所以想判断是否到了每一行的结尾。
展开
展开全部
\n 判断行数是不准确的。
ifstream infile("a.txt",ios::in);
if(! infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
while(!infile.eof())
{
char *buf =new char[1024];
infile.getline(buf,'\r\n');
count++;
}
这是我最近写的一个获取行数的代码。count为最後获取的行数。你看看有没有参考价值吧。
不过我说一下,判断行的结束,我试过\n是不行的,不准确。具体原因我也没搞懂。後来我用\r\n作为判断条件就正确了。
我是读取一个5000多行的txt文件,最後count出来的行数跟我用ultraedit所看到的行数是相匹配的。
本程序代码可能效率不高,但是亲测判断条件是可行的。谢谢!
ifstream infile("a.txt",ios::in);
if(! infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
while(!infile.eof())
{
char *buf =new char[1024];
infile.getline(buf,'\r\n');
count++;
}
这是我最近写的一个获取行数的代码。count为最後获取的行数。你看看有没有参考价值吧。
不过我说一下,判断行的结束,我试过\n是不行的,不准确。具体原因我也没搞懂。後来我用\r\n作为判断条件就正确了。
我是读取一个5000多行的txt文件,最後count出来的行数跟我用ultraedit所看到的行数是相匹配的。
本程序代码可能效率不高,但是亲测判断条件是可行的。谢谢!
展开全部
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
fstream infile;
infile.open("infile.txt",ios::in);
if(!infile)
{
cout<<"infile.txt can't open."<<endl;
abort();
}
char ch;
while(!infile.eof())
{
if(infile.get(ch)=='\n')
{
//输入你要执行的内容
}
cout <<ch<<" ";
};
cout<<endl;
infile.close();
return 0;
}
#include<fstream>
using namespace std;
int main()
{
fstream infile;
infile.open("infile.txt",ios::in);
if(!infile)
{
cout<<"infile.txt can't open."<<endl;
abort();
}
char ch;
while(!infile.eof())
{
if(infile.get(ch)=='\n')
{
//输入你要执行的内容
}
cout <<ch<<" ";
};
cout<<endl;
infile.close();
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char ch;
fgetc(fp)读一个字 if((ch=fgetc(fp))=='\n')判断是否是一行结束
char buf[1024];
fgets(buf,1024,fp);这个是一行一行的读
char name[1024],number[1024],department[1024];
按空格格式放入数组
sscanf(buf,"%s %s %s",name,number,department);
zhangsan two eng
按逗号放入数组
sscanf(buf,"%s,%s,%s",name,number,department);
zhangsan,two,eng
望采纳,还有不懂可以问我
fgetc(fp)读一个字 if((ch=fgetc(fp))=='\n')判断是否是一行结束
char buf[1024];
fgets(buf,1024,fp);这个是一行一行的读
char name[1024],number[1024],department[1024];
按空格格式放入数组
sscanf(buf,"%s %s %s",name,number,department);
zhangsan two eng
按逗号放入数组
sscanf(buf,"%s,%s,%s",name,number,department);
zhangsan,two,eng
望采纳,还有不懂可以问我
追问
- - 我用的是fstream,之前那个我也知道。但是这个不会弄啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以直接用取一行的函数不就行了,getline函数
追问
比如姓名, 性别,年龄,学生号,这都是分开的数据啊 用getline是读到一个字符串里面。不好区分啊
追答
中间没有间隔么,判断下就好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询