Bibliothèque iomanip C ++ - fonction get_money

La description

Cette fonction accède à la séquence d'entrée en construisant d'abord un objet de type basic_istream :: sentry (avec noskipws mis à false). Ensuite (si l'évaluation de l'objet sentinelle est vraie), il appelle money_get :: get (en utilisant les paramètres régionaux sélectionnés du flux) pour effectuer à la fois les opérations d'extraction et d'analyse, et ajuste les indicateurs d'état internes du flux en conséquence. Enfin, il détruit l'objet sentinelle avant de revenir.

Il est utilisé pour extraire des caractères du flux d'entrée auquel il est appliqué et les interpréter comme une expression monétaire, qui est stockée comme la valeur de mon.

Déclaration

Voici la déclaration de la fonction std :: get_money.

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

Paramètres

mon- Objet dans lequel la valeur monétaire est stockée. moneyT doit être soit un double long, soit une instanciation basic_string.

intl- vrai pour les représentations internationales, faux sinon. Ceci est utilisé en interne pour instancier la classe moneypunct appropriée.

Valeur de retour

Non spécifié. Cette fonction ne doit être utilisée que comme manipulateur de flux.

Les erreurs sont signalées en modifiant les indicateurs d'état internes du flux -

drapeau Erreur
eofbit La séquence d'entrée n'a plus de caractères disponibles (fin de fichier atteinte).
échec Soit aucun caractère n'a été extrait, soit les caractères extraits n'ont pas pu être interprétés comme une valeur monétaire valide.
badbit Erreur sur le flux (par exemple lorsque cette fonction intercepte une exception levée par une opération interne). Lorsqu'elle est définie, l'intégrité du flux peut avoir été affectée.

Des exceptions

Basic guarantee- si une exception est levée, l'objet est dans un état valide. Il lève une exception d'échec de type de membre si l'indicateur d'état d'erreur résultant n'est pas goodbit et que les exceptions de membre ont été définies pour être levées pour cet état.

Toute exception levée par une opération interne est interceptée et gérée par la fonction, définissant badbit. Si badbit a été défini lors du dernier appel aux exceptions, la fonction relance l'exception interceptée.

Courses de données

Modifie mon et l'objet de flux dont il est extrait.

L'accès simultané au même objet de flux peut provoquer des courses de données, sauf pour les objets de flux standard cin et wcin lorsque ceux-ci sont synchronisés avec stdio (dans ce cas, aucune course de données n'est initiée, bien qu'aucune garantie ne soit donnée sur l'ordre dans lequel les caractères extraits sont attribués aux fils).

Exemple

L'exemple ci-dessous explique la fonction 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;
}

Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant -

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