gpt4 book ai didi

c++ - 关于在循环中使用 ifstream 的错误

转载 作者:搜寻专家 更新时间:2023-10-31 01:13:18 25 4
gpt4 key购买 nike

我有一个非常简单的代码,它的功能是输入程序将从中读取数据的文件的名称。由于输入错误可能导致文件不正确,如果之前的名称无效,控制台将继续要求用户输入名称。

问题是,虽然第一个 do-while 循环工作正常,但如果在第一个循环中第一次没有正确输入文件名,程序将跳过第二个 while 循环。但是,如果文件名输入正确,则一切正常。

我想知道为什么程序会这样。

感谢您的帮助和抽出时间!

#include<iostream>
#include<fstream>

using namespace std;

int main() {
string context;
int step=0,i=0;
ifstream fin;

do {
string filename;
cout << endl << "please type in the name of input file" << endl;
cin >> filename;
string filepath = "files/" + filename;
cout << filepath << endl;
fin.open( filepath.c_str() );
} while( !fin.is_open() );

while (getline(fin, context)){
cout << context << endl;
cout << "hello" << endl;
}
fin.close();
return 0;
}

最佳答案

我认为“鳍”的状态在第一次尝试后可能会被污染。为什么不尝试在调用 fin.open() 之前调用 fin.clear()。

关于c++ - 关于在循环中使用 ifstream 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12738071/

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