Double zu char* konvertieren



  • Hallo,

    Ich brauche eure Hilfe, ich ¨muss einen double in char* umwandelen.
    Bei google habe ich immer diese sprintf funktion gefunden, diese will ich aber am liebsten nicht benutzen wenn mann sie vermeiden kann.

    Hat einer von euch eine bessere Idee.

    Vielen Dank für eure Hilfe



  • ClaudeG schrieb:

    diese will ich aber am liebsten nicht benutzen wenn mann sie vermeiden kann.

    Darf ich fragen, wieso? O_o



  • naturlich dass du fragen, es ist so, ich mache zur Zeit ein Praktikum und mein Verantworlicher sieht diese funktion nicht als die bestmögliche an, also ich hab sie so benutzt :
    int k=8;
    int size=sizeof(int);
    char* b;
    b=(char*)malloc(size);
    sprintf(b, "%d", k);

    Und er hat mir gesagt dass sobald man ein malloc gebrauchen muss es immer gefährlich wird, darum frage ich ob vielleicht eine besser Lösung gibt!



  • ClaudeG schrieb:

    Ich brauche eure Hilfe, ich ¨muss einen double in char* umwandelen.

    Vielleicht auch nicht. Verrat doch mal, was du willst und nicht womit Du glaubst es erreichen zu können. Du könntest auch mal erklären, was Du genau mit "umwandeln" meinst.

    Gruß,
    SP



  • Na ich muss eine Zahl (double) in einen char* umwandelen damit ich in danach mit hilfe einer Funktion die nur char* nutzen kann weiterverarbeiten kann, aber wie gesagt will die sprintf funktion nicht benutzen wenn es eine andere möglichkeit gibt.



  • #include <sstream>
    #include <iostream>
    
    double d = 244.3;
    
    std::ostringstream oss;
    oss << d;
    
    std::cout << oss.str().c_str() << std::endl;
    


  • Flickr, noch eine kruze frage ist jetzt oss.str().c_str() mein char* oder wie muss ich das verstehen?

    Danke



  • ClaudeG schrieb:

    Na ich muss eine Zahl (double) in einen char* umwandelen damit ich in danach mit hilfe einer Funktion die nur char* nutzen kann

    char* ist ein Zeiger auf char. Was hat das mit double zu tun? Was für einen Zeiger erwartet diese Funktion? Worauf soll da gezeigt werden? Auf eine textuelle Repräsentierung der Zahl? Oder direkt auf die double Variable (type punning) für binäre Ein-/Ausgabe? -- Deswegen fragte ich ja, was Du eigentlich erreichen willst.

    ClaudeG schrieb:

    weiterverarbeiten kann, aber wie gesagt will die sprintf funktion nicht benutzen wenn es eine andere möglichkeit gibt.

    Ok. Das klingt so, als wärst Du an einer textuellen Repräsentierung der Zahl interessiert. Dann sag das auch. 🙂

    Nimm std::string und std::stringstream (siehe frickl0rs Beitrag)

    Gruß,
    SP



  • ClaudeG schrieb:

    Flickr, noch eine kruze frage ist jetzt oss.str().c_str() mein char* oder wie muss ich das verstehen?

    Danke

    Es ist ein const char*. Also Ja.



  • feigling schrieb:

    ClaudeG schrieb:

    diese will ich aber am liebsten nicht benutzen wenn mann sie vermeiden kann.

    Darf ich fragen, wieso? O_o

    Hauptgrund: weil sprintf() eine C-Funtkion ist und es in C++ typsichere und stringlängensichere Funktionalität für soetwas gibt.

    ClaudeG: Hier im Forum gibts eine FAQ, wo du gleich auf der ersten Seite das Topic "Einmal Zahl nach String und zurück" findest. Das hätte dir deine Frage eigentlich beantworten können. Schau also nach Möglichkeit künftig dort nach, wenn du Fragen wie diese hast, wo man davon ausgehen kann, dass sie des öfteren auftauchen. Im übrigen dürften dir die Antworten gezeigt haben dass es häufig sinnvoll ist, nicht mit Informationen zu geizen über dein eigentliches Problem das du beheben willst. Siehe dazu auch die mit wichtig markierten Threads hier im Forum.


Anmelden zum Antworten