Int zu wchar_t konvertieren
-
Hi

Ich habe einen Integerwert und möchte diesen gerne einer Funktion übergeben, die jedoch den Typ 'const wchar_t *' erwartet.
Ich hab schon ne Weile gesucht, wie ich die Typen konvertieren kann, aber leider bisher nichts gefunden. Deshalb wende ich mich jetzt an euch.
Ich würd mich freuen, wenn mir jemand bei dem Problem behilflich sein kann.

Grüße
-
#include <sstream> // ... std::ostringstream ss; ss << deinInt; deineFunktion (ss.str ().c_str ());
-
Hmm, jetzt bekomme ich folgenden Fehler:
Konvertierung des Parameters 1 von 'const char *' in 'const wchar_t *' nicht möglich
-
th3AddY schrieb:
Hmm, jetzt bekomme ich folgenden Fehler:
Konvertierung des Parameters 1 von 'const char *' in 'const wchar_t *' nicht möglich
Dann musst du eine Sekunde nachdenken und nicht den Code des Vorposters blind kopieren. Tip: ostringstream ist ein char-Stream, kein wchar_t-Stream.
-
Okay, jetzt habe ich es folgendermaßen:
std::ostringstream intwchar_t; intwchar_t << myInt; font->draw((wchar_t *)(intwchar_t.str().c_str()), ...);myInt wird jede Sekunde inkrementiert. Solange die Zahl einstellig ist, funktioniert alles wunderbar. Ab 10 jedoch nicht mehr.
Es kann doch eigentlich nicht so kompliziert sein, einer Funktion, die Text zeichnet, einen Integerwert zu übergeben.
-
Hi!
th3AddY schrieb:
Es kann doch eigentlich nicht so kompliziert sein, einer Funktion, die Text zeichnet, einen Integerwert zu übergeben.

Guckst du hier:
void print0r ( wchar_t* s ) { wcout << s << endl; } int main() { wchar_t a[2] = L"a"; for ( int i = 0; i<10; a[0]++, i++ ) print0r( &a[0] ); return 0;}
-
th3AddY, du hast von pumuckl einen wertvollen Tipp erhalten.
Wenn dir der nicht hilft, hier noch einen: Es gibt
std::w...-Streams.
-
Haha, wäre schön wenns so einfach geht. ^^
font->draw() ist eine Methode der Irrlicht-Engine, mithilfe eines Bitmapfonts Text auszugeben. Als Parameter wird hier ein Text vom Typ 'const wchar_t *' erwartet.
Ich hab mir mal die Werte in der Konsole ausgeben lassen:
std::cout << myInt << " : " << intwchar_t.str().c_str() << " : "; std::wcout << *(wchar_t *)(intwchar_t.str().c_str()); std::cout << "\n";Das Ergebnis ist, dass hier alle Zahlen von 0-9 wunderbar konvertiert werden. Ab 10 jedoch wird für '*(wchar_t *)(intwchar_t.str().c_str())' nichts mehr ausgegeben.
EDIT: Sobald die Zahl dreistellig wird, wird die letzte Ziffer ausgegeben.
-
Nur mal so hineingeworfen, da du ja den einen oder andern Tipp zu überlesen scheinst:
std::wostringstream intwchar_t; intwchar_t << myInt; font->draw(intwchar_t.str().c_str(), ...);falls du nicht gerade mit MinWG arbeitest

-
th3AddY schrieb:
Haha, wäre schön wenns so einfach geht. ^^
Man sollte eben die Antworten anderer Forenmitglieder beachten und nicht einfach C-Casts verwenden, um Compilerfehler zu umgehen.
-
Ah, vielen Dank. Es funktioniert endlich.

Im Nachhinein klingen die Tipps auf einmal logisch. Aber ich bin vorher echt nicht drauf gekommen.
-
Wenn man die Std-Lib nicht gut genug kennt, helfen einem diese Tipps auch nicht wirklich weiter.