Frage zu cin.get(char[] a, int x, char b)
-
Hoi
habe ein kleines Problem mit C++, und zwar folgendes:
Ich öffne eine Datei zum Lesen und will alle Wörter einzeln auslesen (um später darüber zu hashen). Dazu nutze ich den Befehldatei.get(buffer, 100, ' ');
, der max. 100 Zeichen aus der Datei liest und in buffer speichert, aber abbricht und ein Nullbyte (Ende des Strings) setzt, wenn ein Leerzeichen erscheint.
Problem: Es soll nicht nur bei Leerzeichen, sondern auch bei Satzzeichen ein Wort beendet werden. Das hab ich bisher mit nem Workaround gelöst, indem ich mir das letzte Zeichen in buffer anschaue und es mit nem Nullbyte überschreibe, wenn ein Satzzeichen vorkommt. Soweit so gut, doch einen Zeilenumbruch erkennt der Code bisher nicht, denn nach dem Zeilenumbruch kommt kein Leer- oder Satzzeichen, d.h. dass das letzte Wort aus der n-ten Zeile und das erste Wort aus der n+1-ten Zeile zusammen im buffer gespeichert weren. Jedes einzelne Wort noch nach einem '\n' zu durchsuchen wäre zu ineffizient. Hat jemand eine Idee wie ich das fixen könnte? Dinge wiedatei.get(buffer, 100, (' ' || '\n'));
funktionieren leider auch nicht, keine Ahnung warum. Vielleicht kennt sich ja jemand gut mit der Syntax aus, bin neu in C++. thx
-
Hi,
Also die Überladene Version von get die du benutzt bricht auch bei einem Newlinezeichen ('\n') ab, dieses Zeichen wird jedoch nicht aus deinem Array entfernt sondern verbleibt bis zur nächsten Eingabe-Operation im Stream.Willst du jedoch dass das newline sowie dein anderes Trennzeichen extrahiert werden so solltest du getline benutzen, es benötigt die selben Parameter wie get jedoch werden die Trenn- und Newlinezeichen entfernt.
Gruß Wolle