cin.getline Problem -Anfängerproblem
-
Hallo!
Ich habe das Gefühl, das ist jetzt ein Anfängerproblem!#include <iostream.h> void main(void) { char eingabe[]=""; cin.getline(eingabe,100); cout << "Ihre Eingabe: ---" << eingabe << "---\n"; if(eingabe=="test") { cout << "Test erfolgreich"; } }
Wenn ich dann im Programm test eingebe, kommt nicht die Ausgabe:
Test erflolgreichDie Ausgabe: Ihre Eingabe: ---test---
kommt aber.Was mache ich falsch?
Vielleicht könnt ihr mir helfen.tallmarkus
-
Autsch du hast keinen Speicher
1. Mit "char eingabe [] = "";" reservierst du automatisch genug Speicher für den String "" - aber nicht für 100 Zeichen. Das heißt dein Programm könnte jederzeit bei der Eingabe mittels cin abstürzen. Tut es aber zum Glück nicht -> Programm funktioniert.
2. Du hast aber noch ein Problem, C-Strings (also char* bzw. char[]) können nicht mittels == verglichen werden.
3. Es heißt <iostream> und nicht <iostream.h> dafür schreibst du drunter einstweilen einfach die Zeile "using namespace std;" siehe dazu auch das Codebeispiel unten.
Lösungsmöglichkeit 1: Du benützt statt den in C++ sowieso nur noch selten angewendeten C-Strings einen eingebauten String:
#include <iostream> // Neue Headerdatei #include <string> using namespace std; int main () { string eingabe; getline(cin,eingabe); // Dieses getline ist für Variablen vom Typ string cout << "Eingabe: " << eingabe << endl; if(eingabe == "test") cout << "TEST ERFOLGREICH" << endl; return 0; }
Lösungsmöglichkeit 2: Du verwendest weiterhin C-Strings reservierst aber genug Speicher und vergleichst mit der Funktion strcmp().
#include <iostream> #include <string.h> // Diese Headerfunktion beinhaltet nicht den Typ string sondern Funktionen für C-Strings using namespace std; int main () { char* eingabe = new char [100]; // Für 100 Zeichen Platz machen cin.getline(eingabe,100); cout << "Eingabe: " << eingabe << endl; if(strcmp(eingabe,"test") == 0) cout << "TEST ERFOLGREICH" << endl; delete [] eingabe; // Die 100 Zeichen brav wieder löschen return 0; }
Das ist aber alles Standard-C/C++ und hat nichts spezifisches mit der Konsole zu tun -> Verschoben ins C++-Forum!
MfG SideWinder
-
Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Danke für die schnelle Antwort!
Es funktioniert jetzt alles bestens.