Heim >Backend-Entwicklung >C++ >Wie kann ich das Trennzeichen für Eingabestreams in C anpassen?
Anpassen des Trennzeichens für Eingabestreams in C
Beim Lesen von Eingaben aus einem Stream mithilfe des Extraktionsoperators (cin) ist das Standardverhalten zu lesen, bis ein Leerzeichen gefunden wird. In bestimmten Szenarien kann es jedoch erforderlich sein, ein benutzerdefiniertes Trennzeichen zu verwenden.
Ändern des Trennzeichens für cin
Die Standardbibliothek bietet eine Möglichkeit, das Inter- Worttrennzeichen für Eingabeströme, z. B. cin. Dies kann mit der imbue-Methode von std::ios_base erreicht werden, um eine benutzerdefinierte Zeichentypfacette namens ctype hinzuzufügen.
Beispiel: Verwendung eines Doppelpunkts als Trennzeichen
Für Angenommen, Sie haben eine Datei im Format /etc/passwd, wobei jedes Feld durch einen Doppelpunkt (:) getrennt ist. Um jedes Feld separat mit einem benutzerdefinierten, auf Doppelpunkten basierenden Trennzeichen zu lesen, können Sie den folgenden Code verwenden:
#include <locale> #include <iostream> struct colon_is_space : std::ctype<char> { colon_is_space() : std::ctype<char>(get_table()) {} static mask const* get_table() { static mask rc[table_size]; rc[':'] = std::ctype_base::space; rc['\n'] = std::ctype_base::space; return &rc[0]; } }; int main() { using std::string; using std::cin; using std::locale; cin.imbue(locale(cin.getloc(), new colon_is_space)); string word; while(cin >> word) { std::cout << word << "\n"; } }
In diesem Beispiel wird eine benutzerdefinierte ctype-Facette mit dem Namen colon_is_space erstellt, die das Doppelpunktzeichen (:) behandelt. und das Newline-Zeichen (n) als Leerzeichen. Indem der Eingabestream cin mit diesem benutzerdefinierten Gebietsschema versehen wird, liest der Extraktionsoperator (>>) jedes durch einen Doppelpunkt getrennte Feld.
Das obige ist der detaillierte Inhalt vonWie kann ich das Trennzeichen für Eingabestreams in C anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!