float in string und string in float konvertieren (Linux-Compiler)



  • Hi,

    ich suche bereits seit Stunden danach, wie ich eine Fließkommazahl (float) in einen String (string) umwandeln kann. Mein Compiler ist g++. Ich habe schon rumprobiert:

    // FloatToStr
    //
    // Wandelt eine Fließkommazahl in einen String um
    string FloatToStr(float Value)
    {
    	return sprintf("%f", Value);
    }
    

    Ergebnis:
    server.c: In function 'std::string FloatToStr(float)':
    server.c:59: error: cannot convert 'float' to 'const char*' for argument '2' to 'int sprintf(char*, const char*, ...)'

    Das 2te Argument muss also ein char-Pointer sein, OK...

    Hilfe!!



  • Ei Ei Ei



  • Und da wir hier im C++-Forum sind, schaust du am besten mal in die C++-FAQ.
    ➡ Einmal Zahl nach String und zurück



  • Danke lieber Osterhase. Trotzdem ist das alles viel zu anfällig.
    Nach dieser Lösung

    _gcvt - Convert Floating-Point to String
    #include <stdlib.h>
    char *_gcvt(double value, int ndec, char *buffer);
    

    Definiere ich mir erst einen Char-Array mit der Länge ???? (ich nehme mal 10 an) und die Funktion wandelt mir dann den float um. Wenn jetzt der Float mehr als 10 Stellen im Char-Array benötigt: Bumm.
    Funktioniert hier sizeof? Also quasi:

    // FloatToStr
    //
    // Wandelt eine Fließkommazahl in einen String um
    string FloatToStr(float Value)
    {
    	char result[sizeof(Value)];
       _gcvt(Value, 10, &result);
    }
    


  • Oh schön, kenne die FAQ ja gar nicht...

    Ich meine, ich hatte ja erstmal anständig gesucht nach "string float" in der Forensuche. Keine Treffer... Danke!



  • http://www.germangamedev.de/index.php?site=faq&id=7

    lexical_cast << das Beste was gibt 🙂



  • Wo wir grad dabei sind: Deine Anwendung von sprintf ist syntaktisch falsch, nicht inhaltlich... Aber auch sowas kann man durch eine Manpage lösen 😉


Log in to reply