Que fait ssortingngstream exactement?

J’essaie d’apprendre le C ++ depuis hier et j’utilise ce document: http://www.cplusplus.com/files/tutorial.pdf (page 32). J’ai trouvé un code dans le document et je l’ai lancé. J’ai essayé de saisir Rs 5.5 pour le prix et un nombre entier pour la quantité et la sortie était 0. J’ai essayé de saisir 5.5 et 6 et la sortie était correcte.

// ssortingngstreams #include  #include  #include  using namespace std; int main () { ssortingng mystr; float price = 0; int quantity = 0; cout <> price; cout <> quantity; cout << "Total price: " << price*quantity << endl; return 0; } 

Question: Que fait exactement la commande myssortingng? Citation du document:

“Dans cet exemple, nous acquérons indirectement des valeurs numériques à partir de l’entrée standard. Au lieu d’extraire des valeurs numériques directement de l’entrée standard, nous obtenons des lignes de l’entrée standard (cin) dans un object ssortingng (mystr), puis nous extrayons l’entier valeurs de cette chaîne dans une variable de type int (quantité). ”

Mon impression était que la fonction prendra la partie intégrante d’une chaîne et l’utilisera comme entrée.

(Je ne sais pas exactement comment poser une question ici. Je suis aussi novice en programmation) Merci.

Parfois, il est très pratique d’utiliser ssortingngstream pour convertir entre des chaînes et d’autres types numériques. L’utilisation de ssortingngstream est similaire à l’utilisation de iostream , ce n’est donc pas un fardeau à apprendre.

Les chaînes de caractères peuvent être utilisées pour lire des chaînes et écrire des données dans des chaînes. Il fonctionne principalement avec un tampon de chaîne, mais sans véritable canal d’E / S.

Les fonctions membres de base de la classe ssortingngstream sont

  • str() , qui renvoie le contenu de son tampon en type chaîne.

  • str(ssortingng) , qui définit le contenu du tampon sur l’argument de chaîne.

Voici un exemple d’utilisation des stream de chaînes.

 ossortingngstream os; os < < "dec: " << 15 << " hex: " << std::hex << 15 << endl; cout << os.str() << endl; 

Le résultat est dec: 15 hex: f

issortingngstream est plus ou moins le même usage.

En résumé, ssortingngstream est un moyen pratique de manipuler des chaînes comme un périphérique d'E / S indépendant .

FYI, les relations d'inheritance entre les classes sont les suivantes:

classes de flux de chaînes

Pour répondre à la question. ssortingngstream gros, ssortingngstream vous permet de traiter un object ssortingng comme un stream et d’utiliser toutes les fonctions de stream et tous les opérateurs sur celui-ci.

Je l’ai vu utilisé principalement pour la qualité de sortie / entrée formatée.

Un bon exemple serait l’implémentation c++ de la conversion d’un nombre en object de stream.

Exemple possible:

 template  ssortingng num2str(const T& num, unsigned int prec = 12) { ssortingng ret; ssortingngstream ss; ios_base::fmtflags ff = ss.flags(); ff |= ios_base::floatfield; ff |= ios_base::fixed; ss.flags(ff); ss.precision(prec); ss < < num; ret = ss.str(); return ret; }; 

C'est peut-être un peu compliqué mais c'est assez complexe. Vous créez ssortingngstream object ssortingngstream ss , modifiez ses indicateurs, ssortingngstream un nombre avec operator< < et extrayez-le via str() . Je suppose que cet operator>> pourrait être utilisé.

Dans cet exemple également, le tampon de ssortingng est masqué et n’est pas utilisé explicitement. Mais il serait trop long de rédiger un article sur tous les aspects et cas d'utilisation possibles.

Note: Je l'ai probablement volé à quelqu'un sur SO et raffiné, mais je n'ai pas l'auteur original noté.