0

我正在研究一个 FileReader 函数,该函数根据行执行特定功能。

但是由于某种原因,我要读取的文件的最后一行总是空白,这会弄乱我的程序。

有没有办法让程序在那个时候停止?

尝试运行它时,我得到以下输出

启动程序:在抛出 'std::out_of_range' 实例后调用终止 what(): basic_string::substr - - 1 1 Abort

我知道这是因为那个空白行,因为我告诉程序在每一行上获取特定元素,而这些元素在该行上为空。

4

1 回答 1

1

据我了解,你有这样的事情:

std::ifstream file("file.txt");
std::string line;
while(getline(file,line)) {
  //read the line
}

我还收集(如果我错了,请纠正我)在您的文件末尾,您有两个换行符,如下所示:

line1\nline2\n\n

如果是这种情况,while 循环体肯定会在最后的一个空行上执行。要解决这个问题,只需忽略空行:

while(getline(file,line)) {
  if (line == "") continue;
  //read the line
}

如果这不起作用,那是因为我误解了您的问题,在这种情况下,请提供更多详细信息。

于 2013-02-25T05:32:35.743 回答