Biblioteca C ++ basic_ios - operador >>

Descrição

É usado para extrair a entrada formatada.

Este operador (>>) aplicado a um fluxo de entrada é conhecido como operador de extração -

  • arithmetic types- Extrai e analisa caracteres sequencialmente do fluxo para interpretá-los como a representação de um valor do tipo apropriado, que é armazenado como o valor de val. Internamente, a função acessa a sequência de entrada construindo primeiro um objeto sentinela (com noskipws definido como falso). Então (se for bom), ele chama num_get :: get (usando a localidade selecionada do fluxo) para realizar as operações de extração e análise, ajustando os sinalizadores de estado interno de acordo. Finalmente, ele destrói o objeto sentinela antes de retornar.

  • stream buffers - Extrai o máximo de caracteres possível do fluxo e os insere na sequência de saída controlada pelo objeto de buffer de fluxo apontado por sb (se houver), até que a sequência de entrada se esgote ou a função falhe ao inserir no objeto apontado por sb .

  • manipulators- Chama pf (* this), onde pf pode ser um manipulador. Manipuladores são funções projetadas especificamente para serem chamadas quando usadas com este operador. Esta operação não tem efeito na seqüência de entrada e não extrai nenhum caractere (a menos que o próprio manipulador faça, como ws).

Declaração

A seguir está a declaração para 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&));

Parâmetros

  • val- Objeto onde o valor que os caracteres extraídos representam é armazenado. Observe que o tipo deste argumento (junto com os sinalizadores de formato do fluxo) influencia o que constitui uma representação válida.
  • sb - Ponteiro para um objeto basic_streambuf em cuja seqüência de saída controlada os caracteres são copiados.

  • pf - Uma função que recebe e retorna um objeto de fluxo.

Valor de retorno

Retorna o objeto basic_istream (* this).

Exceções

Basic guarantee - se uma exceção for lançada, o objeto está em um estado válido.

Corridas de dados

Modifica val ou o objeto apontado por sb.

Exemplo

No exemplo abaixo para 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;
}

Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -

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