J'essaye 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 exécuté. J'ai essayé d'entrer Rs 5,5 pour le prix et un entier pour la quantité et la sortie était de 0. J'ai essayé d'entrer 5,5 et 6 et la sortie était correcte.
// stringstreams
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main ()
{
string mystr;
float price = 0;
int quantity = 0;
cout << "Enter price: ";
getline (cin,mystr);
stringstream(mystr) >> price;
cout << "Enter quantity: ";
getline (cin,mystr);
stringstream(mystr) >> quantity;
cout << "Total price: " << price*quantity << endl;
return 0;
}
Question: Que fait exactement la commande mystring? Citant le 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 objet chaîne (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 également nouveau dans la programmation) Merci.
stringstream
marche. C'est un exemple bizarre probablement même mauvais =) Mais cela montre que vous pouvez traiter la chaîne comme un flux.
stringstream
c'est certainement un mauvais exemple. Et même si c'est le cas, il devrait être écrit différemment.
stringstream
utilisé de cette façon. Habituellement, je charge la ligne, la convertit puis l'extrait par parties, mais cela n'a évidemment que peu d'avantages ici car ilcin
s'agit déjà d'un flux d'entrée ... Cecin >> price >> quantity;
serait donc de loin plus simple. Ce serait une bonne raison de NE PAS utiliser les didacticiels cplusplus.com.