Umwandlung String in mehrere Double



  • Hallo,

    mal angenommen ich habe einen String der mehrere Fliesskomma-Zahlen enthält, durch Leerzeichen oder Semikolon getrennt. Diese Zahlen sollen in Double Variablen umgewandelt werden.

    Wenn es nur eine Zahl wäre dann geht das ja ganz einfach mit Convert::ToDouble oder mit Double::Parse, aber das scheint immer nur für eine Zahl zu funktionieren. Wie komme ich an die anderen Zahlen ran?

    Mit anderen Worten: Wie macht man das in C++, was man in Standard C mit "sscanf" gemacht hätte?

    Gruss
    Michael



  • String::Split(..) + Double::Parse(..)



  • hallo,

    theta schrieb:

    String::Split(..) + Double::Parse(..)

    nach vielen Versuchen habe ich das mit dem String::Split hingekriegt, aber das Double::Parse geht noch nicht. Das Problem ist, dass die Zahl einen "." als Dezimaltrenner hat.

    Ich hatte schon mal ein ähnliches Problem bei ReadLine, dort konnte man ein NumberFormatInfo als Parameter übergeben.
    Aber hier bei Double::Parse gibt es keinen Parameter "NumberFormatInfo".

    Ich wollte eigentlich einen Algorithmus programmieren, der die Zahlen auswertet. Stattdessen hänge ich jetzt seit Stunden an diesem blöden Problem fest, dass ich die Zahlen nicht einlesen kann. Verfluchte Scheisse, das wäre in C mit einer einzigen sscanf() Funktion erledigt gewesen.

    Ich könnte zwar in der Windows Systemsteuerung den "." als Dezimaltrenner definieren, aber das ist keine saubere Lösung weil damit möglicherweise andere Programme ein Problem haben.

    Bitte helft mir mal mit einem Beispiel weiter. Wie konvertiert man den String "123.456" in eine Double Variable, wenn der Dezimaltrenner in der Systemsteuerung als "," definiert ist?

    Gruss
    Michael



  • Such mal hier im Forum nach dem NumberFormatInfo oder ähnlich.
    Es gibt schon Threads dazu...
    Simon



  • Hallo,

    theta schrieb:

    Such mal hier im Forum nach dem NumberFormatInfo oder ähnlich.
    Es gibt schon Threads dazu...
    Simon

    Danke für den Hinweis, es hilft manchmal schon weiter wenn man weiss wonach man konkret suchen muss. So funktioniert es:

    d = Double::Parse(parameter[0], System::Globalization::NumberFormatInfo::InvariantInfo);
    

    Gruss
    Michael


Log in to reply