Ich möchte einen Text Wort für Wort lesen und alle nicht-alphanumerischen Zeichen auf einfache Weise vermeiden. Nachdem ich aus Text mit Leerzeichen und '\ n' 'entwickelt' habe, muss ich das Problem lösen, falls es auch ',', '.' beispielsweise. Der erste Fall wurde einfach gelöst, indem getline mit dem Begrenzer '' verwendet wurde. Ich fragte mich, ob es eine Möglichkeit gibt, getline
mit mehreren Trennzeichen oder sogar mit einer Art von regulären Ausdruck zu verwenden (zum Beispiel '.'|' '|','|'\n'
).Mehrere Trennzeichen für die getline-Funktion, C++
Soweit ich weiß, funktioniert getline
in einer Weise, dass es Zeichen aus dem Eingabestrom liest, bis entweder '\ n' oder delimiter
Zeichen erreicht. Meine erste Vermutung war, dass es ziemlich einfach ist, es mit mehreren Trennzeichen zu versehen, aber ich fand heraus, dass es nicht ist.
Edit: nur als eine Klarstellung. Jeder C-Stil (strtok zum Beispiel, der meiner Meinung nach sehr hässlich ist) oder algorithmischer Lösungsweg ist nicht das, wonach ich suche. Es ist ziemlich einfach, einen einfachen Algorithmus zu finden, um dieses Problem zu lösen und zu implementieren. Ich suche eine elegantere Lösung, oder zumindest eine Erklärung dafür, warum wir damit nicht umgehen können mit der getline
Funktion, da, wenn ich nicht völlig falsch verstanden habe, in der Lage sein könnte, mehr als ein Trennzeichen zu akzeptieren.
@GabeNones Eh, können wir nicht halten die Menschen für Tagging sowohl C und C++ und dann schließen Sie diese C++ Frage als Betrogene dieser C Frage zu schreien. Wir sollten einen C++ - Betrüger finden. –
@BaummitAugen: Das Finden eines C++ - Dupes wäre in Ordnung - aber das, gegen das du es geschlossen hast, ist kein besonders guter Dupe (zumindest IMO). Eine Antwort befasst sich nicht mit diesem Problem (es handelt sich nur um das Aufteilen einer Zeichenkette und nicht das Lesen aus einem Stream, wie hier gefordert). Das andere funktioniert zufällig, aber nur zufällig. (Dies legt fest, dass '\ n' ein Trennzeichen sein sollte, aber es funktioniert nicht für andere, die das nicht wollen). –
@JerryCoffin Die Frage scheint jedoch die gleiche zu sein. Wenn die andere Frage bessere Antworten benötigt, kann man noch eine hinzufügen, sie ist nicht geschlossen. –