Utilisez la fonction ignore() en C++

Jinku Hu 12 octobre 2023
  1. Utiliser la fonction ignore() pour éliminer les entrées non désirées de l’utilisateur en ligne de commande
  2. Utilisez la fonction ignore pour extraire les initiales de l’entrée utilisateur en C++
Utilisez la fonction ignore() en C++

Cet article explique plusieurs méthodes pour utiliser la fonction ignore() en C++.

Utiliser la fonction ignore() pour éliminer les entrées non désirées de l’utilisateur en ligne de commande

La fonction ignore() est une fonction membre de std::basic_istream et est héritée par différentes classes de flux d’entrée. La fonction rejette les caractères du flux jusqu’au délimiteur donné, inclus, et extrait ensuite le reste du flux.

ignore prend deux arguments ; le premier est le nombre de caractères à extraire, et le second est le caractère délimiteur.

L’exemple suivant montre comment la fonction ignore est appelée sur l’objet cin pour stocker seulement 3 nombres et rejeter toute autre entrée de l’utilisateur. Notez que nous utilisons numeric_limits<std::streamsize>::max() comme premier argument de la fonction ignore pour forcer le cas spécial et désactiver le paramètre du nombre de caractères.

#include <fstream>
#include <iostream>
#include <limits>
#include <sstream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::istringstream;
using std::numeric_limits;
using std::string;

int main() {
  while (true) {
    int i1, i2, i3;
    cout << "Type space separated numbers: " << endl;
    cin >> i1 >> i2 >> i3;
    if (i1 == 0) exit(EXIT_SUCCESS);
    cin.ignore(numeric_limits<std::streamsize>::max(), '\n');
    cout << i1 << "; " << i2 << "; " << i3 << endl;
  }
  return EXIT_SUCCESS;
}

Production :

Type space separated numbers:
238 389 090 2232 89
238; 389; 90

Utilisez la fonction ignore pour extraire les initiales de l’entrée utilisateur en C++

Une façon courante d’utiliser la fonction ignore est de rechercher le flux d’entrée au délimiteur souhaité et d’extraire uniquement les caractères nécessaires.

Dans l’exemple de code suivant, l’entrée de l’utilisateur est analysée de manière à ce que seules les initiales des chaînes séparées par des espaces soient extraites. Notez que nous utilisons cin.get deux fois pour extraire un seul caractère du flux, mais l’instruction cin.ignore entre les deux garantit que chaque caractère avant et incluant l’espace suivant est rejeté.

#include <fstream>
#include <iostream>
#include <limits>
#include <sstream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::numeric_limits;
using std::string;
using std::vector;

int main() {
  char name, surname;
  cout << "Type your name and surname: " << endl;
  name = cin.get();
  cin.ignore(numeric_limits<std::streamsize>::max(), ' ');
  surname = cin.get();

  cout << "Your initials are: " << name << surname << endl;

  return EXIT_SUCCESS;
}

Production :

Type your name and surname:
Tim Cook
Your initials are: TM
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - C++ IO