C++ + Qt: Problem bei string und Leerzeichen
-
Guten Tag, ich bringe mir gerade C++ bei und arbeite mit Qt. Nun bin ich am ausprobieren und habe nun ein kleines Problem. In einer Konsolenanwendung sollen Name und Alter eingegeben werden. Anschließend werden diese wieder ausgegeben.
Das Problem ist nun, dass wenn ich ein Leerzeichen im Namen verwende, das Programm vorzeitig beendet.
Es wird leider keine Fehlermeldung oder sonstiges ausgegeben.Hier der Code:
#include <iostream> #include <string> using namespace std; int main() { int iAlter; string strName; cout << "Bitte Name angeben\n"; cin >> strName; cout << "Bitte Alter angeben\n"; cin >> iAlter; cout << "Sie heißen " << strName << " und sind " << iAlter << " Jahre alt."; return 0; }
Ich kann den Fehler leider nicht finden. Es wäre sehr nett, wenn mir da jemand helfen würde.
Vielen Dank!
-
cin liest bei einem String nur bis zu einem Whitespace.
Beim lesen vom Alter werden Ziffern erwartet, da kommen aber Buchstaben, so dass cin in den Fehlerstatus geht.
-
Für den Namen kannst du std::getline verwenden
Mit Qt hat das nichts zu tun.
-
-
Danke für Eure raschen Antworten!
Das mit dem Whitespace klingt logisch.
Ich habe das Problem jetzt wie nach manni66 mit std::getline gelöst.Danke nochmal
-
@Swordfish, danke für den Link.
Ich finde das mit der ungarischen Notation auch manchmal etwas to much. Ich mache es trotzdem, mal mehr mal weniger. Ich denke, es hängt ganz vom Fall ab, was man genau nutzt. Komplett verzichten sollte man darauf meiner Meinung nicht, aber man sollte es auch nicht übertreiben. Wenn man es nur für sich selber macht, sehe ich weniger Probleme, da jeder ja sein eigenes System kennt (oder kennen sollte). Zum Problem wird es, wenn sich jemand fremdes den Code ansehen will. Das kann dann schon nervig und verwirrend werden.
-
@DerDaVinciKot Kann man machen. Bringt halt nichts. Der Sinn der UN: Making Wrong Code Look Wrong ist in modernem C++ schon lange nichtmehr gangbar.
-
Um mal die Aussage des TE etwas geradezurücken:
Er arbeitet nicht mit QT, nutzt aber den QTCreator als Entwicklungsumgebung. Mit QT ( dem Framework ) hat der Quellcode natürlich rein gar nichts zu tun.
-
@It0101 sagte in C++ + Qt: Problem bei string und Leerzeichen:
Er arbeitet nicht mit QT, nutzt aber den QTCreator als Entwicklungsumgebung.
tjoa. sskm.