Programm macht nichtsmehr nach cin
-
Kann das Problem an Visual C++ von Microsoft liegen? Hab gehört der zickt öfters mal rum bei sowas.
-
So, ich wollte die eingabe jetzt mit nem string machen und nicht mit einem char array.
std::string user; getline(cin, user);
Jetzt sagt er mir er kennt getline nicht...
Ich verzweifel hier echt an dieser KleinigkeitEDIT:
Wenn ich das hier:
do{ pass[index] = getch(); index++; }while (pass[index] != '\n');
auskommentiere bleibt das Programm nicht hängen.
Jetzt frage ich mich nur: Wieso bleibt das Programm einen Befehl VOR der Schleife hängen? Eine Endlosschleife hätte ich ja noch verstanden, aber DAS?
-
the_alien schrieb:
Jetzt sagt er mir er kennt getline nicht...
std::getline
the_alien schrieb:
Wenn ich das hier:
do{ pass[index] = getch(); index++; }while (pass[index] != '\n');
auskommentiere bleibt das Programm nicht hängen.
Jetzt frage ich mich nur: Wieso bleibt das Programm einen Befehl VOR der Schleife hängen? Eine Endlosschleife hätte ich ja noch verstanden, aber DAS?
Ist doch kein Wunder. Hast du dir schonmal überlegt, dass pass[index] noch gar nicht initialisiert wurde?
-
Ok. Und wie initialisier ich es richtig?
char pass[128]="";
brachte kein Ergebnis. Das Programm bleibt zwischen cin und cout hängen.
error C2039: 'getline' : is not a member of 'std'
-
char pass[128]="";
damit ist nur ein zeichen 128
versuchs mal mit
char pass[128]={""};
(ohne gewehr
)
-
Du könntest es mit den Codes probieren.
vielleicht funktionierts.
entweder is 13 für enter oder 27.
v glück
-
the_alien schrieb:
error C2039: 'getline' : is not a member of 'std'
#include <string> std::getline //...
Ansonsten kannst du auch
std::cin.getline
probieren.
the_alien schrieb:
Ok. Und wie initialisier ich es richtig?
char pass[128]="";Du packst das ganze an der falschen Stelle an.
do{ pass[index] = getch(); // (1) index++; }while (pass[index] != '\n'); // (2)
Überleg dir nochmal ganz genau, auf welche Speicherstelle pass[index] in Zeile (1) und (2) zeigt.
-
otze schrieb:
char pass[128]="";
damit ist nur ein zeichen 128
versuchs mal mit
char pass[128]={""};
(ohne gewehr
)
-
groovemaster schrieb:
Du packst das ganze an der falschen Stelle an.
do{ pass[index] = getch(); // (1) index++; }while (pass[index] != '\n'); // (2)
Überleg dir nochmal ganz genau, auf welche Speicherstelle pass[index] in Zeile (1) und (2) zeigt.
Stimmt... ist mir noch garnicht aufgefallen. Ändert nichts daran, dass das Programm VOR der Schleife hängen bleibt!
Das
cout << "Password: ";
wird NIE aufgerufen!
-
Um mal auf das ursprüngliche Problem zurückzukommen,
cout << "Passwort: " << flush;
Sollte das Problem lösen. So, wies für mich aussieht, wurde der Stream nicht geflusht. Wenn die Eingabe über cin stattfindet, ist das allerdings kein Problem, weil cout und cin tied sind.
-
0xdeadbeef schrieb:
cout << "Passwort: " << flush;
Sollte das Problem lösen. So, wies für mich aussieht, wurde der Stream nicht geflusht. Wenn die Eingabe über cin stattfindet, ist das allerdings kein Problem, weil cout und cin tied sind.
OMG. Now you are my hero.
Das wars!
Danke.