String-Eingabe zeichenweise überprüfen
-
Hallo Com,
ich arbeite gerade an einem Projekt zu einem Lernprogramm für 10-Finger-Schreiben. Um die Fehlerüberprüfung aber richtig und ganz genu durchführen zu können, suche ich eine Möglichkeit, eine string-Eingabe Buchstabe für Buchstabe zu überprüfen.
Wäre schön, wenn ihr mir helfen könnt.MfG
-
Hallo,
Dafür kannst du doch einfach den Indexoperator [] verwenden.
Siehe auch
http://www.cplusplus.com/reference/string/string/operator[]/
-
Find ich gut, dass es so schnell ging ich denke damit werde ich hinkommen
Danke für die rasche Antwort.
-
Braunstein schrieb:
Dafür kannst du doch einfach den Indexoperator [] verwenden.
Ich hätte eher Iteratoren vorgeschlagen - und am Ende könnte man dann drauf kommen, dass man die Eingabe garnicht erst in einen String einzulesen braucht. Das zu erklären überlass ich aber lieber Werner Salomon
-
Ich wollte einem Anfänger lieber nicht gleich mit Iteratoren kommen. Ich finde da die Indexvariante leichter zu erklären.
-
pumuckl schrieb:
und am Ende könnte man dann drauf kommen, dass man die Eingabe garnicht erst in einen String einzulesen braucht. Das zu erklären überlass ich aber lieber Werner Salomon
Meistens sogar deutlich langsamer, zeichenweise die Zeichen aus dem Stream zu holen. Lieber mit getline in nen String und da vergleichen.
-
Ethon_ schrieb:
pumuckl schrieb:
und am Ende könnte man dann drauf kommen, dass man die Eingabe garnicht erst in einen String einzulesen braucht. Das zu erklären überlass ich aber lieber Werner Salomon
Meistens sogar deutlich langsamer, zeichenweise die Zeichen aus dem Stream zu holen. Lieber mit getline in nen String und da vergleichen.
Und wie holt getline die Zeichen aus dem Stream?
(P.S.: Du meinst wohl read & Co. Aber die passen hier nicht)
-
getline ist deutlich schneller als die primitive Variante (Zeichen einzeln lesen bis '\n'). getline wird wohl mehrere Bytes auf einmal lesen, nach einem newline suchen und gegebenenfalls restliche Zeichen zurück in den Streambuffer schmeißen.
-
Ethon schrieb:
getline ist deutlich schneller als die primitive Variante (Zeichen einzeln lesen bis '\n'). getline wird wohl mehrere Bytes auf einmal lesen, nach einem newline suchen und gegebenenfalls restliche Zeichen zurück in den Streambuffer schmeißen.
Nach einem Blick in die getline-Implementierung des GCC wette ich dagegen. Ich kann mir auch nicht vorstellen, dass andere Implementierungen das großartig anders machen.
Du sollst ja nicht die chars mit operator>> oder anderen Heavyweight-Funktionen lesen, sondern mit etwas ganz primitivem wie getchar oder (wie das getline in meienr Standardbibliothek) direkt mit der char-Lesefunktion des Streambuf.