float in char umwandeln?



  • wie geht das? mit dieser funktion wird ja abgerundet:

    char *itos(int i)
    {
    char *tmp = new char[10];
    itoa(i,tmp,10);
    return tmp;
    }

    also mit itoa...wie krieg ich des denn am besten mit ner rundung auf eine stelle hinterm komma hin?



  • 1. float steht nur im beitragstitel und sonst nirgends... oder willst du ernsthaft nen int auf eine stelle hinterm komma runden 😕

    2. in einer funktion allokierten speicher gibt man nicht zurück. das ist böööse, weil man nur zuschnell vergisst den speicher wieder aufzuräumen.



  • Hallo,

    vielleicht hilft dir das weiter:

    using namespace std;
    
    int main()
    {
            stringstream c;
            float a = 25454.547;
    
            c << a;
    
            cout << c.str() << endl;
    }
    


  • dankee

    edit:

    main.cpp
    D:\Programme\C++ files\MSDev98\MyProjects\charcounter\main.cpp(151) : error C2079: 'takein' verwendet undefiniertes class 'basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> >'
    D:\Programme\C++ files\MSDev98\MyProjects\charcounter\main.cpp(152) : error C2296: '<<' : Ungültig, da der linke Operand vom Typ 'float' ist
    D:\Programme\C++ files\MSDev98\MyProjects\charcounter\main.cpp(152) : error C2297: '<<' : Ungültig, da der rechte Operand vom Typ 'float' ist
    D:\Programme\C++ files\MSDev98\MyProjects\charcounter\main.cpp(153) : error C2664: 'FindAndReplace' : Konvertierung des Parameters 3 von 'int' in 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' nicht moeglic
    h
            Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Ueberladungsaufloesung des Konstruktors ist mehrdeutig
    Fehler beim Ausführen von cl.exe.
    


  • Hi!

    Du musst folgende Header includieren:

    #include <iostream>
    #include <sstream>
    #include <string>
    

    Aber darauf kann man auch selbst kommen. Zumal es dieses Thema in der FAQ gibt.

    Code-Hacker



  • sry 😢

    edit wie kann ich den stringstream denn leeren?



  • str mit leerem String aufrufen, meistens wird clear auch benötigt, um die Fehlerbits zu löschen.



  • stringstream c; 
    float a = 25454.547; 
    
    c << a; 
    
    cout << c.str() << endl; 
    
    // Das hängt davon ab, was du mit richtig genau meinst. Wenn es dein Ziel war 
    // zwischendurch mal die Fehlerbits des stringstreams zu löschen, dann so:
    
    c.clear();
    
    // Willst du hingegen den *Inhalt* des stringstreams zurücksetzen:
    
    c.str("");
    

    schau da:
    http://www.cplusplus.com/ref/iostream/ios/clear.html
    [url]http://www.cplusplus.com/ref/iostream/stringstream/str.html
    [/url]

    cu 😃


Anmelden zum Antworten