gpt4 book ai didi

c++ - ifstream 不读取第一行

转载 作者:行者123 更新时间:2023-11-27 23:37:14 25 4
gpt4 key购买 nike

我正在使用 ~1 年前使用的带有 ifstream 的代码,但现在它无法正常工作。在这里,我有以下文件(因此,只有一行整数):

2 4 2 3

我在从这个文件构建图表时阅读了它:

graph g = graph("file.txt");

图形构造函数的开头是:

#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

graph::graph(const char *file_name) {
ifstream infile(file_name);
string line;
getline(infile, line);
cout << line << endl; // first output
istringstream iss;
iss.str(line);
iss >> R >> C >> P >> K;
iss.clear();

cout << R << " " << C << " " << P << " " << K; // second output
}

第二个输出(在代码中标记),而不是给我 2 4 2 3,返回随机(?)值 -1003857504 32689 0 0。如果我在 getline 之后添加第一个输出来检查 line 的内容,它只是一个空字符串 ""

所有文件(实例化图的main.cpp、实现图的“graph.cpp”和“file.txt”)都位于同一文件夹中。

正如我所提到的,这是我以前工作过的旧代码,所以我可能没有看到破坏它的明显错误。感谢您的帮助。

最佳答案

这两个位置:

  • 您的程序的原始源代码所在的位置
  • 程序的输入数据所在的位置

完全不相关

由于“file.txt”是相对路径,您的程序在执行期间会在当前工作目录 中查找输入数据。有时这与可执行文件所在的位置相同。有时不是。 (只有你知道它是什么,因为它取决于你如何执行你的程序。)与原始源文件的位置永远不会有联系,除非可能是偶然的。

当两者不匹配时,就会出现这个问题,因为您在程序中没有执行 I/O 错误检查。

如果您检查过 infile 是否打开,我敢打赌您会发现它没有打开。

这一点尤其明显,因为程序在一段时间后停止工作,而其逻辑没有任何变化;很有可能,唯一可以改变的是解决方案中各种元素的位置

关于c++ - ifstream 不读取第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58403666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com