HOWTO · C++
Utilisez la fonction ignore() en C++
Cet article montre comment utiliser 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