Ich versuche seit gestern C ++ zu lernen und verwende dieses Dokument: http://www.cplusplus.com/files/tutorial.pdf (Seite 32). Ich habe einen Code im Dokument gefunden und ihn ausgeführt. Ich habe versucht, Rs 5,5 für den Preis und eine Ganzzahl für die Menge einzugeben, und die Ausgabe war 0. Ich habe versucht, 5,5 und 6 einzugeben, und die Ausgabe war korrekt.
// 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;
}
Frage: Was genau macht der Befehl mystring? Zitat aus dem Dokument:
"In diesem Beispiel erfassen wir numerische Werte indirekt aus der Standardeingabe. Anstatt numerische Werte direkt aus der Standardeingabe zu extrahieren, erhalten wir Zeilen aus der Standardeingabe (cin) in ein Zeichenfolgenobjekt (mystr) und extrahieren dann die Ganzzahl Werte aus dieser Zeichenfolge in eine Variable vom Typ int (Menge). "
Mein Eindruck war, dass die Funktion den integralen Bestandteil eines Strings als Eingabe verwendet.
(Ich weiß nicht genau, wie ich hier eine Frage stellen soll. Ich bin auch neu in der Programmierung.) Danke.
stringstream
funktioniert. Es ist eine bizarre, wahrscheinlich sogar eine schlechte =) Aber es zeigt, dass Sie String als Stream behandeln können.
stringstream
dann ist es definitiv ein falsches Beispiel. Und selbst wenn es so ist, sollte es anders geschrieben werden.
stringstream
. Normalerweise lade ich die Zeile, konvertiere sie und extrahiere sie dann nach Teilen, aber das hat hier offensichtlich wenig Vorteil, dacin
es sich bereits um einen Eingabestream handelt ... Dascin >> price >> quantity;
wäre also weitaus einfacher. Das wäre ein guter Grund , cplusplus.com-Tutorials NICHT zu verwenden.