c++ - 具有重复输入的文件流

标签 c++ do-while ifstream

我正在尝试创建一个重复菜单,允许用户在程序无法打开文件时重新输入文件名。

现在,如果我输入现有文件的名称,它可以正常工作,但如果该文件不存在,它会打印“未找到文件”,然后执行程序的其余部分。我是文件流的新手,这里的大部分代码都是通过引用找到的。我对到底发生了什么以及处理这种情况的最佳方法有点迷茫。任何指导将不胜感激。

typedef istream_iterator<char> istream_iterator;    

string fileName;

ifstream file;

do {        
    cout << "Please enter the name of the input file:" << endl;
    cin >> fileName;

    ifstream file(fileName.c_str());

    if (!file) {
        cout << "File not found" << endl;
    }

} while (!file);

std::copy(istream_iterator(file), istream_iterator(), back_inserter(codeInput));

最佳答案

构造对象后 file 将永远存在,所以你的循环条件总是失败。将条件更改为文件是否未正常打开。

do {
...
}
while (!file.is_open())

关于c++ - 具有重复输入的文件流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49726344/

相关文章:

java - 如何使输入更改正在设置的字符串?

Java游戏小 pig 分数不计算?

c - 用指针返回一个值(C 程序)

c++ - 对于循环不读取ifstream

c++ - 看不懂这段代码?这是关于在 C++ 中读取文件

c++ - 将字符串移出 std::ostringstream

c++ - 加权随机数 V2(动态情况)

c++ - 无法使用 ifstream 将 txt 文件的最后一部分写入 cout

c++ - 循环和if的优化

c++ - 属性表 (MFC) 的 RTL 布局问题