我正在尝试从特定行中的文本文件中获取一些数据(第 1、第 7、第 13 等 - 需要的数据放在下一个第 6 行)
到目前为止,我的代码是这样的:
txtfile = "titles.txt";
ifstream txt(txtfile);
const int buffer_size = 80;
char title_buffer[buffer_size];
const int titleLineDiff = 6;
if (txt.is_open())
{
while(!txt.eof())
{
static int counter = 1;
txt.getline(title_buffer, buffer_size);
cout << "Title: \"" << counter << "." << title_buffer << "\"" << endl;
counter++;
//seek to the next title...difference is 6 lines
for(int i = 0; i < titleLineDiff; i++)
txt.getline(title_buffer, 40);
}
}
现在,它适用于我创建的这个文件:
testONE
two
three
four
five
six
testTWO
bla
它打印“testONE”和“testTWO”但是当我试图打开包含数据的文件时,我得到一个无限循环,输出是
标题:“counter_increasing_number。”
文本文档是从互联网上复制的,这可能是导致阅读问题的原因。
我能做些什么呢?
我已将代码更改为:
while(getline(txt,title_buffer))
{
static int counter = 1;
//getline(title_buffer, buffer_size);
cout << "Title: \"" << counter << "." << title_buffer << "\"" << endl;
counter++;
//seek to the next title...difference is 6 lines
for(int i = 0; i < titleLineDiff; i++)
{
getline(txt, title_buffer);
}
}
它奏效了。
有人可以解释一下为什么第一个不起作用的原因吗?