Heim >Backend-Entwicklung >C++ >Wie kann ich Trennzeichen für Eingabestreams in C anpassen?
Anpassen von Trennzeichen für Eingabestreams in C
Beim Lesen von Eingaben aus einem Dateistream mit „cin“ ist das Standardtrennzeichen für die Wortextraktion Leerzeichen. Während dieses Verhalten in den meisten Fällen ausreicht, können Szenarien auftreten, in denen alternative Trennzeichen erforderlich sind. In diesem Artikel wird gezeigt, wie Sie das Worttrennzeichen für „cin“ mithilfe der Funktion „std::ios_base::imbue“ ändern.
Betrachten Sie zur Veranschaulichung das Beispiel des Lesens einer Datei im Format „/etc/“. passwd“, wobei jedes Feld durch einen Doppelpunkt (:) getrennt ist. Das folgende C-Programm nutzt die Funktion „std::ios_base::imbue“, um den Doppelpunkt als Leerzeichentrennzeichen neu zu definieren:
#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"; } }
Dieses Programm, wenn es mit „/etc/passwd“-formatierten Eingaben präsentiert wird , wird jedes durch einen Doppelpunkt getrennte Feld erfolgreich lesen und ausgeben. Die Struktur „colon_is_space“ weist das Doppelpunktzeichen neu zu, damit es als Leerzeichen behandelt wird, sodass „cin“ es als Trennzeichen behandeln kann.
Das obige ist der detaillierte Inhalt vonWie kann ich Trennzeichen für Eingabestreams in C anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!