stringstream >> zu long?



  • Folgendes schlägt fehl (Werte werden nicht in die Variablen gestreamt):

    string things = "1334935914467  213 21334 435643 456";
    long i;
    double s;
    double f;
    double c;
    double h;
    
    stringstream into(things);
    
    into >> i >> s >> f >> c >> h; 
    cout << i <<"  "<< s <<"  "<< f <<"  "<< c;
    

    Folgendes geht:

    string things = "133493 213 21334 435643 456";
    long i;
    double s;
    double f;
    double c;
    double h;
    
    stringstream into(things);
    
    into >> i >> s >> f >> c >> h; //all are different types!
    cout << i <<"  "<< s <<"  "<< f <<"  "<< c;
    

    Der Unterschied ist der erste Zahlenwert (1334935914467 vs 133493). Wie kann ich das Problem lösen ?



  • long long i; anstatt long i; benutzen: Also nein, mit long geht es nicht, 1334935914467 zu groß ist.



  • Unter Windows ist ein long nur 32bit groß, da passt die Zahl nicht rein. Nimm long long oder besser std::int64_t.
    Auf Unixen ist ein long bei 64bit in der Regel auch 64bit groß.


Anmelden zum Antworten