Utilisez 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 -
Utilisez la fonction
ignore
pour extraire les initiales de l’entrée utilisateur 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
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