【发布时间】:2021-07-06 07:53:38
【问题描述】:
我有代码需要打印出文件并从文件中找到一些值。
#include <iostream>
#include <fstream>
using namespace std;
int main() {
string input;
fstream nameFile;
nameFile.open("data.txt", ios::in);
if (nameFile) {
getline(nameFile, input);
while (nameFile) {
cout << input << endl;
getline(nameFile, input);
}
} else {
cout << " ERROR : cannot open file.\n ";
}
int largest_1{};
int largest_2{};
int largest_3{};
for (int a{}, b{}, c{}, d{}, e{}; nameFile >> a >> b >> c >> d >> e;) {
if (c > largest_1)
largest_1 = c;
if (d > largest_2)
largest_2 = d;
else if (e > largest_3)
largest_3 = e;
std::cout << "The largest value 1 is " << largest_1 << '\n';
std::cout << "The largest value 2 is " << largest_2 << '\n';
std::cout << "The largest value 3 is " << largest_3 << '\n';
}
}
但是,在我运行这段代码之后,它并没有在 for 循环中打印出来。有谁知道如何解决这个问题?
【问题讨论】:
-
第一个循环读取到文件末尾。第二个循环无法读取任何内容,因此永远不会进入。
-
如何确保读取第二个循环?
-
我们不知道。第一个循环的目的是什么?你需要吗?
-
你的意思是 if 循环吗?
-
在第二个循环之前添加
namefile.seekg(0);以倒回文件。如果您没有使用 C++11 或更新版本,您可能还需要namefile.clear();在查找之前清除错误状态。您也可以关闭文件并再次打开它。