2017-11-27 4 views
-1

Ich lese einige Zahlen. Die Eingabe ist zum Beispiel:Cin Lesen bis ';' ist in cpp

1 2 3 4 ; 2 3 4 5 6; 

Wenn ich ';' Ich möchte etwas damit machen und die Nummer dazu. Derzeit verwende ich:

while(1) { 
    cin >> num; 
    if(cin.fail()){ 
     // end of first array 
     return 0; 
    } 
} 

jedoch auf diese Weise cin fehlschlagen, wenn es ein Zeichen ist, nicht nur ‚;‘

+2

[ 'std :: getline'] (http://en.cppreference.com/w/cpp/string/basic_string/getline) zusammen mit' std :: istringstream' lassen Sie tun, was Sie wollen – Justin

+0

Wenn 'std :: cin' im Fail-Zustand ist, ist das nächste zu lesende Zeichen ein' ';' 'in Ihrem Beispiel, und Sie können' clear() 'verwenden und das' '; Charakter, um fortzufahren. – user0042

+1

Werfen Sie einen Blick auf Option 2 in dieser Antwort: https://stackoverflow.com/a/7868998/4581301. Nutzen Sie die Möglichkeit, das Ende der Zeile Token anzugeben ('while (std :: getline (infile, line, ';') ')) und ersetzen Sie den Dateistream durch' cin'. – user4581301

Antwort

0

Sie können Cahr lesen und überprüfen. Wenn es keine Ziffer ist, mach was du willst und kehre zurück; sonst setzen Sie den char zurück mit cin.putback(char) und lesen Sie int.

char c; 
while (1) { 
    cin >> c; 
    if (c < '0' || c >'9') { // is not digit 
     // do something 
     return 0; 
    } 
    cin.putback(c); 
    cin >> num; 
}