Usa la funzione ignore() in C++

Jinku Hu 12 ottobre 2023
  1. Utilizzare la funzione ignore() per eliminare l’input dell’utente dalla linea di comando indesiderato
  2. Usa la funzione ignore per estrarre le iniziali dell’input dell’utente in C++
Usa la funzione ignore() in C++

Questo articolo spiegherà diversi metodi su come utilizzare la funzione ignore() in C++.

Utilizzare la funzione ignore() per eliminare l’input dell’utente dalla linea di comando indesiderato

La funzione ignore() è una funzione membro di std::basic_istream ed è ereditata da diverse classi di flussi di input. La funzione elimina i caratteri nel flusso fino al delimitatore specificato, incluso, quindi estrae il resto del flusso.

ignore accetta due argomenti; il primo è il numero di caratteri da estrarre e il secondo è il carattere delimitatore.

L’esempio seguente mostra come viene chiamata la funzione ignore sull’oggetto cin per memorizzare solo 3 numeri e scartare qualsiasi altro input dell’utente. Nota che usiamo numeric_limits<std::streamsize>::max() come primo argomento della funzione ignore per forzare il caso speciale e disabilitare il parametro del numero di caratteri.

#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;
}

Produzione:

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

Usa la funzione ignore per estrarre le iniziali dell’input dell’utente in C++

Un modo comune di utilizzare la funzione ignore è cercare il flusso di input nel delimitatore desiderato ed estrarre solo i caratteri necessari.

Nel seguente esempio di codice, l’input dell’utente viene analizzato in modo che vengano estratte solo le iniziali delle stringhe separate da spazi. Si noti che stiamo usando cin.get due volte per estrarre un singolo carattere dallo stream, ma l’istruzione cin.ignore tra di loro assicura che ogni carattere prima e incluso lo spazio successivo venga scartato.

#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;
}

Produzione:

Type your name and surname:
Tim Cook
Your initials are: TM
Autore: 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

Articolo correlato - C++ IO