C++ Abfrage mit Leerzeichen

...komplette Frage anzeigen

3 Antworten

du kannst keinen string einfach mit dem operator "==" vergleichen ... verwende dazu bitte string ::compare(). compare gibt 0 zurück, wenn der inhalt des strings mit dem übergebenem übereinstimmt, also:

if (Eingabe.compare("Irgendwas")==0) 
{ 
     // irgendwas passiert   
}

stimmen die strings nicht überein, gibt compare einen wert ungleich 0 zurück. Das vergleichen klappt auch mit Leerzeichen problemlos. Dein Problem mit den Leerzeichen, liegt eher bei cin. der streamoperat liest genau ein Wort ein. um eine ganze zeile(also bis zum Enter-Druck) einzulesen, kannst du getline() verwenden du solltest jedoch beachten, dass getline kein aggument vom typ string akzeptiert (why ever). Du muss also auf ein char* array zurückgreifen. Das funktioniert folgender maßen:

char Eingabe[100];//wichtig!: du hast speicher für 100 Zeichen reserviert! deine eingabe darf also nicht länger werden!

cin.getline(Eingabe,100);//wir geben 100 an, da unser eingabe array platz für 100 zeichen hat..

if (strcmp(Eingabe,"Irgendwas")==0)//da wir keine strings verwenden, verwenden wir hier die funktion strcmp().
{ 
    // irgendwas passiert   
}

wenn du dennoch strings verwenden möchtest, kannst du natürlich den Array "Eingabe" auch problemlso einfach einem String zuweisen... ich hoffe ich konnte helfen!

LG SK

sry. vergiss den mist ab:"dass getline kein aggument vom typ string akzeptiert" ... ist nähmlich blödsin. tut es nähmlich sehr wohl wie mir grade aufgefallen ist :D ... nochmal zur verbesserung:

string Eingabe;
getline(cin,Eingabe);

if(Eingabe.compare("irgentwas")==0)
{
    //mach was
}

... sry. ka. was ich grade intus hatte, das ich son blödsinn schreibe O.o ... :D

LG SK

0
@SK199613

Ja genau das war das, danke dir :). das cin war wirklich das Problem

0

Dazu bietet sich eine C-Funktion aus stdio.h an:

#include <stdio.h>
...
fgets(char *str, int num, FILE *stream);

Diese Funktion liest num Zeichen aus stream und speichert sie in str. Da stdin wie ein Dateizeiger verwendet werden kann, kann man mit diesem Code einen num Zeichen langen String in str einlesen, und zwar von stdin aus:

fgets(str, num, stdio);

Übrigens kann man die Eingaben in eine Datei lenken, z. B. wenn man das Programm debuggen möchte und nicht jedes Mal die gleichen Befehle eingeben will:

freopen(filename, "r", stdin);

Das gleiche Funktioniert auch mit stdout. Interessant wird es insbesondere mit stderr: So könnte man die Fehlermeldungen in ein Logfile packen und nur ein einziges Mal ausgeben, dass ein Fehler aufgetreten ist.

Wozu eine C-Funktion? C++ bietet eigene Mittel dafür.

0

Also ich kenn mich mit C++ nicht aus aber der Datentyp String kann natürlich auch Leerzeichen enthalten. Ein String ist einfach eine Zeichenkette. Also ein Wort oder ein Satz z.B.

Aber cin liest nur bis zum ersten Leerzeichen. Ich denke, dass er das meint. Er will einen String mit Leerzeichen einlesen.

0

Was möchtest Du wissen?