double-Variable anstatt "text" in Befehl einsetzen
-
Guten Abend!
Kann mir jemand sagen, wie ich eine Variable vom Typ long double in einen const char umwandeln kann?
Das Problem ist: Mithilfe des SDL_ttf-Befehls
TTF_RenderText_Solid( font, "Hallo", clrFg )kann ich einen Text (in diesem Fall Hallo) auf den Bildschirm schreiben. Das funktioniert aber nicht, wenn ich "Hallo" durch eine Variable vom Typ long double ersetze.
Vielen Dank schon mal für eine Antwort.
P.S.: Bin noch Anfänger in C++
-
Als einzeiler würde sich boost::lexical_cast empfehlen, falls du boost installiert hast.
Sonst mit Standard-C++-Mitteln:
#include <sstream> ... stringstream s; s << <dein Double>; TTF_RenderText_Solid( font, s.str().c_str(), clrFg )
-
So funktionierts,
vielen Dank!!!
Edit:
Kann ich den stringstream auch zurücksetzen? ich benötige ihn in einer Schleife und muss in jedem Durchlauf einen anderen Wert reinschreiben.
-
stringstream.str().clear();Sollte das sein.
-
Der Compiler bringt keine Fehlermeldung, der stringstream wird aber auch nicht zurückgesetzt.

-
cbs-schüler schrieb:
Der Compiler bringt keine Fehlermeldung, der stringstream wird aber auch nicht zurückgesetzt.

versuch mal: sstream.flush();
hier ne übersicht: http://cppreference.com/cppio/index.html
-
Was für geile Vorschläge 
std::ostringstream ss; ss << 9.542 << " ist ein \"double\""; std::cout << ss.str() << std::endl; ss.str(""); ss.clear(); ss << 3 << " ist ein \"integer\", eine Ganzzahl" << std::endl;
-
(D)Evil schrieb:
Was für geile Vorschläge 
Der beste Vorschlag stand doch eigentlich oben: boost::lexical_cast
Nur nicht jeder setzt Boost ein, und auch die C-Alternativen sind imho ähnlich grausam wie die C++ Mehrzeiler.Wenigstens hat sich ja der C++0x Standard auch diesem angenommen...
cu André
-
asc schrieb:
Der beste Vorschlag stand doch eigentlich oben: boost::lexical_cast
Ist nicht wirklich der beste vorschlag
-
Wenn du Alternativen zu lexical_cast suchst, schau doch mal in die FAQ - Thema "Einmal String nach Zahl und zurück".
-
The-Kenny schrieb:
stringstream.str().clear();Sollte das sein.
Ich würde es eher mit
stringstream.str(std::string());versuchen. str() ohne Parameter ist der Extraktor, der liefert eine Kopie zurück, und die Kopie wird dann gecleart in deiner Version

-
André schrieb:
Wenigstens hat sich ja der C++0x Standard auch diesem angenommen...
Was genau meinst du damit (würde mich sehr interessieren, da ich gerne alle Neuerungen erfahren möchte, s.a. http://www.c-plusplus.net/forum/viewtopic-var-t-is-196431-and-start-is-10.html - mein Beitrag auf der 2. Seite)
-
Ich denke er meinte
Th schrieb:
<string>:
Überladung von std::string nach Zahlen Konvertierung (und zurück)
- int stoi(const string&, ...)
- string to_string(long long val);
- ...
-
LordJaxom schrieb:
Ich denke er meinte...
Genau. ;P