Sto cercando di imparare il C ++ da ieri e sto usando questo documento: http://www.cplusplus.com/files/tutorial.pdf (pagina 32). Ho trovato un codice nel documento e l'ho eseguito. Ho provato a inserire Rs 5.5 per il prezzo e un numero intero per la quantità e l'output era 0. Ho provato a inserire 5.5 e 6 e l'output era corretto.
// 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;
}
Domanda: cosa fa esattamente il comando mystring? Citando dal documento:
"In questo esempio, acquisiamo indirettamente valori numerici dallo standard input. Invece di estrarre i valori numerici direttamente dallo standard input, otteniamo linee dallo standard input (cin) in un oggetto stringa (mystr), quindi estraiamo il numero intero valori da questa stringa in una variabile di tipo int (quantità). "
La mia impressione è stata che la funzione prendesse la parte integrante di una stringa e la usasse come input.
(Non so esattamente come fare una domanda qui. Sono anche nuovo nella programmazione) Grazie.
stringstream
funziona. È bizzarro probabilmente anche cattivo =) Ma mostra che puoi trattare la stringa come un flusso.
stringstream
allora è sicuramente un esempio sbagliato. E anche se lo è, dovrebbe essere scritto in modo diverso.
stringstream
usato in questo modo. Di solito carico la riga, la converto e poi la estraggo per parti, tuttavia questo ovviamente ha poco vantaggio qui perchécin
è già un flusso di input ... Quindicin >> price >> quantity;
sarebbe di gran lunga più semplice. Questa sarebbe una buona ragione per NON usare i tutorial di cplusplus.com.