Problem: float in wstringstream



  • Hallo Zusammen

    Entschuldigt wenn ich mit nem alten Problem komme, aber ich hab schon ne Weile rumprobiert und gesucht, in C++ Referenz und Forum, aber das Problem bleibt.

    Habe einen wstringstream und gebe darauf eine float aus, mit Angabe der Kommastellen, danach soll eine Einheit ausgegeben werden.
    Nun wird die Zeile aber beim Punkt abgeschnitten.
    Also hier mein Codestück:

    #include <sstream>
    #include <iomanip>
    //...
        std::wstringstream text;
        float bla = 123.456789;
        switch( msg ) 
        {
        case WM_PAINT:
            text << std::setprecision(6) << std::fixed << bla << " Blas" ;
            if( hDC = BeginPaint( hWnd_, &ps ) ) 
            {
                TextOut( hDC, 0, 0, text.str().c_str(), sizeof( text.str().c_str() ) );	
                EndPaint( hWnd_, &ps );
            }
    

    Ausgabe: 123.

    Ich hatte erst ewig Probleme mit Unicode / wchar_t / LPCWSTR Konvertierung, und nun das. 😞
    Wer kann mir Helfen bitte?

    Vielen Dank im Voraus 🙂
    ______

    [edit]
    Lösung: statt sizeof( text.str().c_str() ) musste ich text.str().length angeben für die Länge des Strings.
    Aber warum? Die beiden Funktionen sollten doch das gleiche Ergebniss haben, oder seh ich das falsch?
    [/edit]



  • Nein, sizeof(text.str().c_str()) liefert Dir die Größe eines konstanten char-Zeigers, und das ist üblicherweise 4 oder 8 (64-bit) Byte.



  • *schlafausdenaugenreib* 😮

    Ja stimmt, ich depp.
    Danke, so geht es jetzt.

    Hät noch die Frage, ob es für stringstreams eine Multidefinitions Variante gibt,
    wie das _T(x) oder TCHAR Makro? (VC2005)



  • nein musste selbst machen

    std::basic_stringstream<TCHAR> ss;
    


  • Ok, Danke


Anmelden zum Antworten