Tasks geht so: Sie sollten Name, Preis, Betrag in einer Zeile eingeben und wenn Betrag nicht angegeben wird, sollte der Betrag standardmäßig sein 1. mein Problem ist: Sie sollten in so viele Zeilen eingeben, wie Sie zum Beispiel Typ, wenn Sie wollen: Affe 200 3 stingray 399 1C++ mehrere cin Standardwert, wenn nicht eingegeben, Hinzufügen zu einer Karte <string, Vektor <double>>
es funktioniert, aber wenn Sie Namen nennen und die Menge Preis sollte sein hinzugefügt, um die Karte mit der Menge 1, wenn eine nicht gegeben ist. Stattdessen springt ut zum nächsten und Sie geben einen String-Namen auf einem int ein und die Schleife knackt. Gibt es einen anderen Weg, dies zu tun?
#include <string>
#include <map>
#include <vector>
int main(){
map<string, vector<double>> vec;
string name;
double price;
double amount;
while(cin >> name >> price >> amount){
vec[name] = {price , amount}
}
return 0;
}
So wie Sie es getan haben, muss der Benutzer die drei Felder eingeben, und der Betrag scheint optional zu sein. Sie müssen es lesen, als ob es eine einzelne Zeichenfolge ist, und es dann teilen - wenn Sie einen Betrag finden, gehen Sie Ihren Standardpfad. Wenn nicht, gehen Sie auf den alternativen Pfad. –
okej, ich habe gelesen wie getline Befehl aber wie benutze ich es richtig in meiner Situation @LeonardoAlvesMachado – Jim
lesen Sie in der Zeile in eine 'Zeichenfolge'. lade die 'string' in einen' stringstream' und analysiere dann die Daten. Wenn Sie ein Feld verpassen, wird der Stream in einen Fehlerzustand versetzt, und Sie wissen dann, ob der Betrag standardmäßig sein sollte oder nicht. – NathanOliver