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