Auf Whitespace Zeichen testen.
-
Will ein Programm schreiben das Zeichen auf Whitespace Zeichen testet. Und wenn es true ist dann soll ein Text ausgegeben werden und das gleiche gilt wenn es false ist. Aber ich bekommen immer false auch wenn die Zeichen Whitespace Zeichen sind.
int main() { char c; cout << " Gib was ein : "; c = cin.get(); if (isspace(c) == true) cout << "Ja ebenfalls, ist Whitespace!" << endl; if (isspace(c) == false) cout << "Nein es ist kein Whitespace!" << endl; return 0; }
-
So gehts:
winux schrieb:
int main() { char c; cout << " Gib was ein : "; c = cin.get(); if (isspace(c)) cout << "Ja ebenfalls, ist Whitespace!" << endl; else cout << "Nein es ist kein Whitespace!" << endl; return 0; }Die Funktion isspace hat einen integer-wert als Rückgabewert, keinen boolschen.
Daher wird beim Test isspace(c)==true der rechte Operand zu einem integer konvertiet und dann auf Gleichheit geprüft. Allerdings muss isspace nicht zwangsläufig 1 zurückgeben, sondern es kann beispielsweise 8 sein. Dann wird 8==1 geprüft, was natürlich nicht stimmt --> ergo false liefert.
-
Aber irgendetwas geht nicht obwohl ich mit folgenden Whitespace Zeichen teste:
'\n'.Kriege immer die zweite Antwort.
-
Das sind 4 Zeichen. Keins davon ist ein Whitespace-Zeichen.
-
Also ich meine ohne die ' '. Das habe ich nur hier geschrieben.
-
Schreib mal
cout << "Nein, " << c << " ist kein Whitespace!" << endl;Dann weißt du, warum es so ist.
-
Jetzt verstehe ich etwas. Das Programm erkennt die Eingabe \n nur als ein \ und das es kein Whitespace ist wird die zweite Meldung ausgegeben. Aber wieso erkennt das Programm nicht richtig das es ein \n ist und kein \.
-
Weil du zwei Zeichen eingibst. Das erste ist ein \ und das zweite ist ein n. Der Backslash hat nur in Zeichenketten in deinem Code die spezielle Bedeutung, dass du ein Zeichen escapen willst. Wenn der User einen Backslash eingibt, dann ist das wirklich ein Backslash, also in C++-Code ein '\'.
-
Hi
Bin neu, das hätte auch mal jemand komplett posten können ^^