Maison > développement back-end > C++ > Comment puis-je personnaliser les délimiteurs de flux d'entrée en C ?

Comment puis-je personnaliser les délimiteurs de flux d'entrée en C ?

Patricia Arquette
Libérer: 2024-12-19 07:34:09
original
697 Les gens l'ont consulté

How Can I Customize Input Stream Delimiters in C  ?

Personnalisation des délimiteurs de flux d'entrée en C

Les flux d'entrée, tels que le flux d'entrée standard std::cin, utilisent des caractères d'espacement comme délimiteurs en défaut. Cependant, que se passe-t-il si vous devez utiliser un caractère alternatif comme délimiteur ?

Malheureusement, la bibliothèque standard C ne fournit pas de moyen simple de modifier le délimiteur pour std::cin. Cependant, il existe une solution de contournement en utilisant la fonction std::ios_base::imbue pour ajouter une facette ctype personnalisée.

Le code ci-dessous montre comment changer le délimiteur de std::cin en caractère deux-points, lisant efficacement mots délimités dans le style de /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 &amp;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";
  }
}
Copier après la connexion

Dans ce code, la classe colon_is_space est définie comme un ctype personnalisé facette qui identifie les caractères deux-points (':' ) et de nouvelle ligne ('n' ) comme caractères d'espace. En intégrant cette facette dans std::cin, nous étendons efficacement la reconnaissance des caractères d'espacement pour inclure les deux points.

Par conséquent, lorsque vous utilisez std::cin >> opérateur, il lira les mots délimités par des deux-points. Cela vous permet d'analyser facilement les fichiers de données qui suivent un format séparé par deux points.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal