Heim > Backend-Entwicklung > C++ > Wie kann ich Trennzeichen für Eingabestreams in C anpassen?

Wie kann ich Trennzeichen für Eingabestreams in C anpassen?

Linda Hamilton
Freigeben: 2024-12-08 10:48:14
Original
746 Leute haben es durchsucht

How Can I Customize Delimiters for Input Streams in C  ?

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 &amp;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";
  }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage