Problem mit der getline Funktion
-
Ich habe folgendes Programm geschrieben:
cin>>foo; if(foo[0]=='A'&&foo[1]=='B') { cout<<"ok 1"<<endl; } if(foo[0]=='A'&& foo[1]=='B'&& foo[2]=='C') { cout<<"ok 2"<<endl; } if(foo[0]=='A'&&foo[1]=='B'&&foo[2]=='C' && foo[3] == 'D' ) { cout<<"ok 3"<<endl; } } return 0; }Ausgabe:
AB
ok 1
ABCD
ok 1
ok 2
ok 3Wenn ich AB eingeben bekomme ich ok 1 ausgeben das ist ja in ordnung.
Aber wenn ich dann ABCD eingeben dann bekomme ich ausgeben ok 1, ok 2 und ok 3Wie kann ich das vermeiden?
Ist es sinnvoll die Anzahl der Zeichen die eingeben wurden einfach mit 0 zu überschreiben? Oder gibt es da bessere Lösungen?
-
Unter der Annahme, dass foo ein std::string ist,
if(foo == "AB") { std::cout << "ok1\n"; } else if(foo == "ABC") { std::cout << "ok2\n"; } else if(foo == "ABCD") { std::cout << "ok3\n"; }Wenn foo ein char[] ist, solltest du schleunigst einen std::string daraus machen.
-
Weil alle Bedinungen erfüllt werden
if(foo[0]=='A'&&foo[1]=='B'&&foo[2]=='C' && foo[3] == 'D' ) { cout<<"ok 3"<<endl; } else if(foo[0]=='A'&& foo[1]=='B'&& foo[2]=='C') { cout<<"ok 2"<<endl; } else if(foo[0]=='A'&&foo[1]=='B') { cout<<"ok 1"<<endl; }so müsste es gehen
-
Angenommen ich will folgendes:
Der Benutzer soll eingeben: AB test.txt
Mein Programm soll erkennen die ersten Zeichen sind AB also rufe Funktion XY auf die eine Datei mit dem Namen test.txt erstellt.
Der Benutzer gibt als nächstes ein ABCD msg also ruft mein Programm die Funktion Box auf die eine Message Box mit dem string msg ausgibt.
Das ist jetzt nur ein Beispiel damit will ich verdeutlichen worauf ich hinaus will.
Egal ob ich char oder string nehme ich treffe doch immer wieder auf das Problem was im in meinem ersten Post beschrieben habe.

-
#include <string> #include <iostream> void ab_function() { std::cout << "Doing AB.\n"; } void abcd_function() { std::cout << "Doing ABCD.\n"; } int main() { std::string action; std::cout << "Bitte Action eingeben (AB oder ABCD): "; std::cin >> action; if( action == "AB" ) { ab_function(); } else if( action == "ABCD" ) { abcd_function(); } else { std::cout << "Ungültige Action.\n"; } }