Biblioteca iomanip de C ++ - Función get_money

Descripción

Esta función accede a la secuencia de entrada construyendo primero un objeto de tipo basic_istream :: sentry (con noskipws establecido en false). Luego (si la evaluación del objeto centinela es verdadera), llama a money_get :: get (usando la configuración regional seleccionada de la secuencia) para realizar tanto la extracción como las operaciones de análisis, y ajusta los indicadores de estado internos de la secuencia en consecuencia. Finalmente, destruye el objeto centinela antes de regresar.

Se utiliza para extraer caracteres del flujo de entrada al que se aplica y los interpreta como una expresión monetaria, que se almacena como el valor de mon.

Declaración

A continuación se muestra la declaración de la función std :: get_money.

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

Parámetros

mon- Objeto donde se almacena el valor monetario. moneyT será una instanciación long double o basic_string.

intl- verdadero para representaciones internacionales, falso en caso contrario. Esto se usa internamente para crear una instancia de la clase moneypunct adecuada.

Valor devuelto

Sin especificar. Esta función solo debe usarse como manipulador de flujo.

Los errores se señalan modificando los indicadores de estado internos de la transmisión:

bandera error
eofbit La secuencia de entrada no tiene más caracteres disponibles (se alcanzó el final del archivo).
fallo No se extrajo ningún carácter o los caracteres extraídos no se pudieron interpretar como un valor monetario válido.
badbit Error en la transmisión (como cuando esta función detecta una excepción generada por una operación interna). Cuando se establece, la integridad de la transmisión puede haberse visto afectada.

Excepciones

Basic guarantee- si se lanza una excepción, el objeto está en un estado válido. Lanza una excepción de falla de tipo de miembro si la marca de estado de error resultante no es goodbit y las excepciones de miembro se establecieron para lanzar para ese estado.

Cualquier excepción lanzada por una operación interna es capturada y manejada por la función, configurando badbit. Si badbit se estableció en la última llamada a excepciones, la función vuelve a generar la excepción detectada.

Carreras de datos

Modifica mon y el objeto de flujo del que se extrae.

El acceso simultáneo al mismo objeto de flujo puede causar carreras de datos, excepto para los objetos de flujo estándar cin y wcin cuando estos están sincronizados con stdio (en este caso, no se inician carreras de datos, aunque no se dan garantías sobre el orden en el que se extraen los caracteres se atribuyen a hilos).

Ejemplo

En el siguiente ejemplo se explica la función 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;
}

Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:

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