Biblioteca C ++ iomanip - função get_money

Descrição

Esta função acessa a sequência de entrada construindo primeiro um objeto do tipo basic_istream :: sentry (com noskipws definido como false). Então (se a avaliação do objeto sentinela for verdadeira), ele chama money_get :: get (usando o local selecionado do fluxo) para realizar as operações de extração e análise, e ajusta os sinalizadores de estado interno do fluxo de acordo. Finalmente, ele destrói o objeto sentinela antes de retornar.

É usado para extrair caracteres do fluxo de entrada ao qual é aplicado e os interpreta como uma expressão monetária, que é armazenada como o valor de mon.

Declaração

A seguir está a declaração para a função std :: get_money.

template <class moneyT>
/*unspecified*/ get_money (moneyT& mon, bool intl = false);

Parâmetros

mon- Objeto onde o valor monetário é armazenado. moneyT deve ser long double ou uma instanciação de basic_string.

intl- verdadeiro para representações internacionais, falso caso contrário. Isso é usado internamente para instanciar a classe moneypunct adequada.

Valor de retorno

Não especificado. Esta função deve ser usada apenas como um manipulador de fluxo.

Os erros são sinalizados pela modificação dos sinalizadores de estado interno do fluxo -

bandeira erro
eofbit A seqüência de entrada não tem mais caracteres disponíveis (final do arquivo atingido).
failbit Nenhum caractere foi extraído ou os caracteres extraídos não puderam ser interpretados como um valor monetário válido.
badbit Erro no fluxo (como quando esta função captura uma exceção lançada por uma operação interna). Quando definido, a integridade do fluxo pode ter sido afetada.

Exceções

Basic guarantee- se uma exceção for lançada, o objeto está em um estado válido. Ele lança uma exceção de falha de tipo de membro se o sinalizador de estado de erro resultante não for goodbit e exceções de membro foram definidas para lançar para esse estado.

Qualquer exceção lançada por uma operação interna é capturada e tratada pela função, definindo badbit. Se badbit foi definido na última chamada para exceções, a função relança a exceção capturada.

Corridas de dados

Modifica mon e o objeto stream do qual é extraído.

O acesso simultâneo ao mesmo objeto de fluxo pode causar corridas de dados, exceto para os objetos de fluxo padrão cin e wcin quando estes são sincronizados com stdio (neste caso, nenhuma corrida de dados é iniciada, embora nenhuma garantia seja dada na ordem em que os caracteres extraídos são atribuídos a tópicos).

Exemplo

No exemplo abaixo explica sobre a função get_money.

#include <iostream>     
#include <iomanip>      

int main () {
   long double price;
   std::cout << "Please, enter the price: ";
   std::cin >> std::get_money(price);

   if (std::cin.fail()) std::cout << "Error reading price\n";
   else std::cout << "The price entered is: " << price << '\n';

   return 0;
}

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

Please, enter the price: 50
The price entered is: 50