Wenn meine Eingabedatei mit einem Buchstaben beginnt, stoppt sie die while-Schleife, weil sie int1
nicht umschreiben kann. Ich weiß, aber wie könnte ich das erkennen und eine Fehlermeldung anzeigen, dass workinfile>>int1
nicht funktioniert und danach die Schleife fortsetzen ?Mit ifstream while-Schleife, wie ein Eingabefehler zu zeigen, und in der nächsten Zeile fortgesetzt?
cin>>filename;
ifstream workingfile(filename);
while (workingfile>>int1>>int2>>string1>>string2) {
cout<<int1<<int2<<string1<<string2<<endl;
linenumread++;
}
Ich habe versucht zu tun, aber es funktioniert nicht, würde jede Hilfe
while (workingfile>>int1>>int2>>string1>>string2) {
if(!(workingfile>>int1))
{
cout<<"Error first value is not an integer"<<endl;
continue;
}
cout<<int1<<int2<<string1<<string2<<endl;
linenumread++;
}
auch möglich sein, geschätzt werden, um zu erkennen, wäre es, wenn es stoppt auch die Saiten zu lesen?
Die Eingabedatei wie diese
10 10 ab bc
11 11 cd ef
a
12 12 gh hi
Ich möchte aussehen würde erkennen, wenn sie auf eine ungültige Eingabe trifft, zeigen eine Fehlermeldung, und mit der nächsten Zeile in der Datei fortzusetzen.
Die while-Schleife jeder ungültige Eingabe zu stoppen. mit 'std :: getline()' in der Schleifenbedingung, der beste Ansatz wäre eine komplette Linie zu lesen und den String mit 'std :: istringstream' analysiert und für jeden Wert zu überprüfen. – user0042
Willkommen bei Stack Overflow! Ihr Code ist unvollständig. insbesondere scheint es eine 'main()' Funktion und mindestens ein '# include' zu fehlen. Bitte [bearbeiten] Sie Ihren Code, so dass es ein [mcve] Ihres Problems ist, dann können wir versuchen, es zu reproduzieren und zu lösen. Sie sollten auch [fragen] lesen. –
@TobySpeight Es ist nicht wirklich notwendig, hier den vollständigen Code zu liefern. Das Problem ist bei dem gegebenen Beispiel ziemlich offensichtlich. Ich habe heute weit schlimmere Fragen gesehen. – user0042