Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

File stream with repeating input

I'm attempting to create a repeating menu that will allow a user to re-enter a file name if the program is unable to open the file.

Right now it works correctly if I enter the name of an existing file, but if the file doesn't exist it prints the "File not found" then executes the rest of the program. I'm new to file streams and most of the code here was found through references. I'm a bit lost on what exactly is going on and what the best way to handle the situation is. Any guidance would be appreciated.

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));
like image 496
zmjackson Avatar asked May 30 '26 05:05

zmjackson


1 Answers

After constructing the object file will always exist, so your loop condition always fails. Change the condition to whether the file didn't open properly.

do {
...
}
while (!file.is_open())
like image 54
acraig5075 Avatar answered May 31 '26 17:05

acraig5075



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!