I faced this problem when I tried to press ctrl + z to activate the end-of-file key when working on istream object cin. My code below:
ofstream output("test.dat");
string name;
string accountNum;
double balance;
cout << "? ";
while (cin >> numAccout >> name >> balance) {
output << numAccout << ' ' << name << ' ' << balance << endl;
cout << "? ";
}
when I tried to press ctrl+z 3 times at different positions: ‘ctrl + z’, ‘100 cltr+z’, ‘100 john ctrl+z’
So the first and the last try make the program stop input but the second try is not!! @@
Can anyone help me with that, please??
try to understand when end-of-file can activate
⟼Remember, it’s always important, especially when learning and asking questions on Stack Overflow, to keep your code as organized as possible. Consistent indentation helps communicate structure and, importantly, intent, which helps us navigate quickly to the root of the problem without spending a lot of time trying to decode what’s going on.
Ctrl+Z
as end-of-file is a CP/M-ism that DOS inherited, and Windows inherited it from DOS. It isn’t part of C++, it’s part of your operating system or your OS’s shell. It may interact (poorly) with your shell’s line input (which may be what you are running into). You’d be better off making small input files, anda.exe < input.txt
rather than trying to mimic end-of-file withCtrl+Z
on the command line.while (cin >> numAccout >> name >> balance)
means process as long you are able to read all three data item: numAccout, name, balance. Location of end of file shouldn’t have impact on it. It should be always all or nothing.Your title says “end-of-line”, your question says “end-of-file”, what are you actually asking about here? Please include a minimal reproducible example that actually compiles, and doesn’t contain unused variables.
♦
@MarekR its not actually “all or nothing”. For example, extraction of
numAccount
might be fine, then extraction ofname
might fail, and because of that extraction ofbalance
wouldnt happen.Show 1 more comment