c – 重复输入的文件流

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

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

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));

解决方法:

这段代码可行.

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

    file = std::ifstream(fileName.c_str());

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

} while (!file);

你的错误是你有2个文件变量的定义.
while(!file)中的变量是在do-while循环外定义的变量,默认情况下有效状态设置为true.

上一篇:c – tellg()函数给出错误的文件大小?


下一篇:c – std :: basic_ifstream抛出std :: bad_cast