Maison > développement back-end > C++ > Comment puis-je changer le délimiteur de l'entrée « cin » en C ?

Comment puis-je changer le délimiteur de l'entrée « cin » en C ?

Linda Hamilton
Libérer: 2024-12-05 16:39:12
original
828 Les gens l'ont consulté

How Can I Change the Delimiter for `cin` Input in C  ?

Modification du délimiteur pour l'entrée 'cin' en C

Lorsque vous travaillez avec des flux d'entrée en C, il est courant d'utiliser 'cin' pour lire les entrées de l'utilisateur. Par défaut, 'cin' traite les caractères d'espacement comme des délimiteurs, séparant les mots ou les jetons. Que faire si vous devez utiliser un délimiteur différent ?

Bien que l'API de la bibliothèque standard C ne fournisse pas explicitement de méthode pour modifier le délimiteur de « cin », il est possible d'y parvenir en utilisant « std : » Fonction ios_base::imbue'.

'std::ios_base::imbue' vous permet d'ajouter une facette 'ctype' personnalisée à l'entrée flux. Les facettes Ctype définissent le comportement de classification des caractères pour une locale donnée.

Voici un exemple qui montre comment remplacer le délimiteur par le caractère deux-points (':') :

#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";
  }
}
Copier après la connexion

Dans cet exemple , une facette 'ctype' personnalisée, 'colon_is_space', est créée. Cette facette classe les caractères deux-points (':') et de nouvelle ligne ('n') comme des espaces.

En imprégnant le flux d'entrée d'un paramètre régional à l'aide de cette facette personnalisée, nous modifions effectivement le délimiteur de « cin » en le côlon. Par conséquent, lors de la lecture d'une entrée à l'aide de l'opérateur d'extraction (>>), les deux points seront traités comme un séparateur.

Cette technique peut être utilisée pour gérer les formats d'entrée qui utilisent des caractères autres que des espaces comme délimiteurs. .

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