Biblioteca C ++ iomanip - função put_money

Descrição

Esta função acessa a seqüência de saída construindo primeiro um objeto do tipo basic_ostream :: sentry. Então (se a avaliação do objeto sentinela for verdadeira), ele chama money_put :: put (usando a localidade selecionada do fluxo) para realizar as operações de formatação e inserção, ajustando os sinalizadores de estado interno do fluxo de acordo. Finalmente, ele destrói o objeto sentinela antes de retornar.

É usado para inserir a representação de mon como um valor monetário no fluxo de saída ao qual é aplicado.

Declaração

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

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

Parâmetros

mon- Valor monetário. 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

Ele retorna 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
failbit A função falhou ao formatar mon (ela também pode ser definida se a construção da sentinela falhar).
badbit A inserção no fluxo falhou ou algum outro erro aconteceu (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.

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 o objeto de fluxo onde está inserido.

O acesso simultâneo ao mesmo objeto de fluxo pode causar corridas de dados, exceto para os objetos de fluxo padrão (cout, cerr, clog, wcout, wcerr e wclog) quando estes são sincronizados com stdio (neste caso, nenhuma corrida de dados é iniciada, embora não as garantias são fornecidas na ordem em que os caracteres de vários threads são inseridos).

Exemplo

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

#include <iostream>
#include <iomanip>

int main () {
   std::cout << "Price:" << std::put_money(10.50L) << '\n';
   return 0;
}

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

Price:10