Heim >Backend-Entwicklung >C++ >Wie kann ich Eingabestream-Trennzeichen in C anpassen?
Anpassen von Eingabestream-Trennzeichen in C
Eingabestreams, wie der Standardeingabestream std::cin, verwenden Leerzeichen als Trennzeichen von Standard. Was aber, wenn Sie ein alternatives Zeichen als Trennzeichen verwenden müssen?
Leider bietet die C-Standardbibliothek keine einfache Möglichkeit, das Trennzeichen für std::cin zu ändern. Es gibt jedoch eine Problemumgehung, indem die Funktion std::ios_base::imbue verwendet wird, um eine benutzerdefinierte Ctype-Facette hinzuzufügen.
Der folgende Code zeigt, wie man das Trennzeichen für std::cin in den Doppelpunkt ändert und so effektiv liest durch Trennzeichen getrennte Wörter im Stil von /etc/passwd.
#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() { std::cin.imbue(std::locale(std::cin.getloc(), new colon_is_space)); std::string word; while (std::cin >> word) { std::cout << word << "\n"; } }
In diesem Code wird die Klasse colon_is_space als benutzerdefinierter ctype definiert Facette, die den Doppelpunkt (':') und den Zeilenumbruch ('n') als Leerzeichen identifiziert. Indem wir diese Facette in std::cin integrieren, erweitern wir die Erkennung von Leerzeichen effektiv um den Doppelpunkt.
Wenn Sie also std::cin >> Operator liest er Wörter, die durch Doppelpunkte getrennt sind. Dadurch können Sie Datendateien, die einem durch Doppelpunkte getrennten Format folgen, problemlos analysieren.
Das obige ist der detaillierte Inhalt vonWie kann ich Eingabestream-Trennzeichen in C anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!