Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 文件最后一行为空时的停止条件C++;_C++_File_Blank Line - Fatal编程技术网

C++ 文件最后一行为空时的停止条件C++;

C++ 文件最后一行为空时的停止条件C++;,c++,file,blank-line,C++,File,Blank Line,我正在开发一个FileReader函数,它根据行执行特定的函数 然而,由于某些原因,我想要读取的文件的最后一行总是空的,这会把我的程序搞砸 有没有办法让程序在那一点停止 当尝试运行它时,我得到以下输出 启动程序: 在抛出'std::out_of_range'的实例后调用terminate what():基本字符串::substr --11中止 我知道这是因为那一空行,因为我告诉程序在每一行上获取特定的元素,而这些元素在那一行上是空的。据我所知,您有这样的情况: std::ifstream fil

我正在开发一个FileReader函数,它根据行执行特定的函数

然而,由于某些原因,我想要读取的文件的最后一行总是空的,这会把我的程序搞砸

有没有办法让程序在那一点停止

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

启动程序: 在抛出'std::out_of_range'的实例后调用terminate what():基本字符串::substr --11中止


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

据我所知,您有这样的情况:

std::ifstream file("file.txt");
std::string line;
while(getline(file,line)) {
  //read the line
}
line1\nline2\n\n
我还收集(如果我错了,请纠正我)在您的文件末尾,您有两行换行符,如下所示:

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
}

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

这将有助于我们了解您遇到的问题。理想情况下是一个简单的自包含示例,或者至少是现有代码的一部分。您是否在问当一行为空时如何不执行任何操作?或者你是在问如何知道一行是最后一行?@DrewDormann更具体地说,我想告诉计算机在到达那一行时关闭文件。不仅仅是考虑到这一点。我打赌当(!infle.eof())循环时会有……第一个空行?还是最后一行?或者最后一行,如果它是空的?这有效了!非常感谢您,好心的先生。你救了我,使我免于脱发!