Libreria C ++ basic_ios - operatore >>

Descrizione

Viene utilizzato per estrarre l'input formattato.

Questo operatore (>>) applicato a un flusso di input è noto come operatore di estrazione -

  • arithmetic types- Estrae e analizza i caratteri in sequenza dal flusso per interpretarli come la rappresentazione di un valore del tipo appropriato, che viene memorizzato come valore di val. Internamente, la funzione accede alla sequenza di input costruendo prima un oggetto sentry (con noskipws impostato su false). Quindi (se valido), chiama num_get :: get (utilizzando la locale selezionata del flusso) per eseguire sia l'estrazione che le operazioni di analisi, regolando di conseguenza i flag di stato interni. Infine, distrugge l'oggetto sentinella prima di tornare.

  • stream buffers - Estrae il maggior numero di caratteri possibile dallo stream e li inserisce nella sequenza di output controllata dall'oggetto buffer dello stream puntato da sb (se presente), fino a quando la sequenza di input non è esaurita o la funzione non riesce a inserirsi nell'oggetto puntato da sb .

  • manipulators- Chiama pf (* this), dove pf può essere un manipolatore. I manipolatori sono funzioni progettate specificamente per essere chiamate quando vengono utilizzate con questo operatore. Questa operazione non ha alcun effetto sulla sequenza di input e non estrae caratteri (a meno che non lo faccia il manipolatore stesso, come WS).

Dichiarazione

Di seguito è riportata la dichiarazione per std :: basic_istream :: operator >>

C ++ 98

arithmetic types (1)	
basic_istream& operator>> (bool& val);
basic_istream& operator>> (short& val);
basic_istream& operator>> (unsigned short& val);
basic_istream& operator>> (int& val);
basic_istream& operator>> (unsigned int& val);
basic_istream& operator>> (long& val);
basic_istream& operator>> (unsigned long& val);
basic_istream& operator>> (float& val);
basic_istream& operator>> (double& val);
basic_istream& operator>> (long double& val);
basic_istream& operator>> (void*& val);
stream buffers (2)	
basic_istream& operator>> (basic_streambuf<char_type,traits_type>* sb );
manipulators (3)	
basic_istream& operator>> (basic_istream& (*pf)(basic_istream&));
basic_istream& operator>> (
  basic_ios<char_type,traits_type>& (*pf)(basic_ios<char_type,traits_type>&));
basic_istream& operator>> (ios_base& (*pf)(ios_base&));

C ++ 11

arithmetic types (1)	
basic_istream& operator>> (bool& val);
basic_istream& operator>> (short& val);
basic_istream& operator>> (unsigned short& val);
basic_istream& operator>> (int& val);
basic_istream& operator>> (unsigned int& val);
basic_istream& operator>> (long& val);
basic_istream& operator>> (unsigned long& val);
basic_istream& operator>> (long long& val);
basic_istream& operator>> (unsigned long long& val);
basic_istream& operator>> (float& val);
basic_istream& operator>> (double& val);
basic_istream& operator>> (long double& val);
basic_istream& operator>> (void*& val);
stream buffers (2)	
basic_istream& operator>> (basic_streambuf<char_type,traits_type>* sb );
manipulators (3)	
basic_istream& operator>> (basic_istream& (*pf)(basic_istream&));
basic_istream& operator>> (
  basic_ios<char_type,traits_type>& (*pf)(basic_ios<char_type,traits_type>&));
basic_istream& operator>> (ios_base& (*pf)(ios_base&));

Parametri

  • val- Oggetto in cui è memorizzato il valore rappresentato dai caratteri estratti. Si noti che il tipo di questo argomento (insieme ai flag di formato del flusso) influenza ciò che costituisce una rappresentazione valida.
  • sb - Puntatore a un oggetto basic_streambuf sulla cui sequenza di output controllata vengono copiati i caratteri.

  • pf - Una funzione che accetta e restituisce un oggetto flusso.

Valore di ritorno

Restituisce l'oggetto basic_istream (* this).

Eccezioni

Basic guarantee - se viene generata un'eccezione, l'oggetto è in uno stato valido.

Gare di dati

Modifica val o l'oggetto puntato da sb.

Esempio

Nell'esempio seguente per std :: basic_istream :: operator >>

#include <iostream>     

int main () {
   int n;

   std::cout << "Enter a number: ";
   std::cin >> n;
   std::cout << "You have entered: " << n << '\n';

   std::cout << "Enter a hexadecimal number: ";
   std::cin >> std::hex >> n;         
   std::cout << "Its decimal equivalent is: " << n << '\n';

   return 0;
}

Compiliamo ed eseguiamo il programma sopra, questo produrrà il seguente risultato:

Enter a number: 11
You have entered: 11
Enter a hexadecimal number: 5E
Its decimal equivalent is: 94