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

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-07 01:47:10283Durchsuche

How Can I Customize the Delimiter for Input Streams in C  ?

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 &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";
  }
}

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!

Stellungnahme:
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