C++中怎样获取文件的行数

定义一个文件流fstreamfin("a.txt"),在a.txt里面如果有0行则输出0,有n行则输出n。不能通过数回车符的方式来计算行数,这样如果不小心多输了几个回车符... 定义一个文件流fstream fin("a.txt"),在a.txt里面如果有0行则输出0,有n行则输出n。
不能通过数回车符的方式来计算行数,这样如果不小心多输了几个回车符,这样就不行了
展开
 我来答
百度网友96ffcf7
2015-08-02 · 知道合伙人互联网行家
百度网友96ffcf7
知道合伙人互联网行家
采纳数:22721 获赞数:118724
从事多年网络方面工作,有丰富的互联网经验。

向TA提问 私信TA
展开全部
判断是不是空行啊,假如是空行就不计数;
假如读到的不是空格也不是制表符,flag = 1;
假如读到的是回车,而且flag == 1,则count++,flag = 0;否则直接flag=0。
目的是为了读取足够长的行,可以采用下面的读取方式:

ifstream infile("a.txt");//此处默认的文件打开方式为“以输出的方式打开”
char str[N];//N是定义的常数,目的是为了读取足够长的行
int n=0;//用来表示说读/写文本的行数
while(!infile.eof())
{
infile.getline(str, sizeof(str));//此处默认的终止标识符为‘\n’
n++;
}
cout<<n;
ylinhu
2009-07-09 · TA获得超过261个赞
知道答主
回答量:169
采纳率:0%
帮助的人:0
展开全部
1楼的方法可行啊,再加个判断文件结束的判断就可以了
ifstream in("a.txt");
char str[N];//N是定义的常数,目的是为了读取足够长的行
int n=0;
while(!in.eof())
{
in.getline(str, sizeof(str));
n++;
}
cout<<n;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pz0513
2009-07-09 · TA获得超过793个赞
知道小有建树答主
回答量:821
采纳率:0%
帮助的人:573万
展开全部
看看有多少个'\n'就行了啊

那你就判断是不是空行啊,假如是空行就不计数啊
假如读到的不是空格也不是制表符,flag = 1
假如读到的是回车,而且flag == 1,则count++,flag = 0;否则直接flag=0;
很简单啊

就是
flag = 0;//flag = 1的意思就是“该行有非空字符”
count = 0;
while((c = getchar()) != EOF){
if(c != ' ' && c != '\t')
flag = 1;
else if(c == '\n'){
if(flag == 1)
count++;
flag = 0;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sulzh
2009-07-07
知道答主
回答量:47
采纳率:0%
帮助的人:0
展开全部
不知道有没有直接获取行数的函数,但你可以读取行,统计。
ifstream in("a.txt");
string line;
int n=0;
while(getline(in,line))
{
n++;
}
cout<<n;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
therandomworld
2009-07-07 · TA获得超过812个赞
知道小有建树答主
回答量:724
采纳率:0%
帮助的人:546万
展开全部
统计 '\n'的个数

行数='\n'的个数+1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式