【发布时间】:2011-03-29 18:22:14
【问题描述】:
我正在从文本文件中读取行,我想知道这是否是一个好方法?我必须编写函数numberoflines 将number_of_lines variable 减1,因为在while 循环中,它读取的每一行都会将2 加到number_of_lines 变量中。
#include <iostream>
#include <fstream>
using namespace std;
int number_of_lines = 0;
void numberoflines();
int main(){
string line;
ifstream myfile("textexample.txt");
if(myfile.is_open()){
while(!myfile.eof()){
getline(myfile,line);
cout<< line << endl;
number_of_lines++;
}
myfile.close();
}
numberoflines();
}
void numberoflines(){
number_of_lines--;
cout<<"number of lines in text file: " << number_of_lines << endl;
}
还有其他更简单更好的方法吗?
【问题讨论】:
-
您使用的是类 UNIX 系统吗?如果是这样,您是否正在读取带有 DOS 行结尾的文件?如果是这样,一个 DOS 换行符可能会被视为两个 UNIX 换行符。 (我没有测试过;只是一个猜测。)
-
如果你每行加 2,你不应该把结果除以 2 而不是只减一吗?
-
你有理由重新发明轮子吗?已经有程序可以做到这一点。试试
wc -l:unixhelp.ed.ac.uk/CGI/man-cgi?wc -
@casablanca,对不起,我的意思是,它在开始时会在计数中增加一个 1,我想在这种情况下我可以从 -1 开始计数。 @strager,嗯,我之前添加了换行符,但 getline 不起作用?无论哪种方式,这种方法都适用于 linux 吗?。
-
我对换行的假设是错误的。我正在阅读您的描述,而不是我应该拥有的代码。有关您正在寻找的解释,请参阅下面的答案。