C++如何做到只读取文件的某一行
比如在一个目录下有好多文件,现在我要读取每个文件的第二行,请问使用什么方式可以实现?给个思路也可以,感谢大家...文件是这样的:516511512513519563534...
比如在一个目录下有好多文件,现在我要读取每个文件的第二行,请问使用什么方式可以实现?给个思路也可以,感谢大家...
文件是这样的:
516 511 512 513
519 563 534 298
就是说我不能直接读第二行,要先用一个数组把第一行读了,然后忽略掉?没有其他可以定位的东西吗... 展开
文件是这样的:
516 511 512 513
519 563 534 298
就是说我不能直接读第二行,要先用一个数组把第一行读了,然后忽略掉?没有其他可以定位的东西吗... 展开
3个回答
展开全部
可以先使用ifstream类打开要读的文件,然后使用ifstream的成员函数getline读出一行数据。
如果需要读的并不是第一行,而是中间某一行,那么可以先读出前面所有行,抛弃后读需要的一行。
以下是读文件file_name的第n行的操作:
//读取文件filename的第n行,存到buf中,buf_len为buf的长度。
void read_line(char *filename, int n, char *buf, int buf_len)
{
ifstream in(filename);//打开文件。
int i;
for(i = 0;i< n; i ++)
in.getline(buf, buf_len);//读取数据。
in.close();//关闭文件。虽然在C++中不是必须,但是显式关闭文件是一个很好的习惯。
}
展开全部
如果你确切知道第一行所占的字节数,那么可以使用fseek定位到第二行的位置再读;如果不知道的话,那就只能读取第一行再扔了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
枚举目录下的文件名;
依次打开;
一次读取一行;
把第一行的数据忽略;
这样就读到了第二行。
伪码如下:
getline temp;
getline str;
这样str就是第二行了。
补充答案:
直接忽略掉是最好的方法,又方便,不知道楼主为何还要别的方法?
依次打开;
一次读取一行;
把第一行的数据忽略;
这样就读到了第二行。
伪码如下:
getline temp;
getline str;
这样str就是第二行了。
补充答案:
直接忽略掉是最好的方法,又方便,不知道楼主为何还要别的方法?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询