int --> wchar_t Konvertierung
-
Hallo!
Ich bin ein C++ Neuling und bräuchte bei dem folgenden Problem Hilfe:Ich möchte eigentlich nur int in wchar_t * (also einen wchar_t Pointer) verwandeln. Leichter gesagt als getan, denn ich versuche das ganze nun schon einige Stunden irgendwie zum Laufen zu bewegen schaffe es aber nicht.
Ich würde nun gerne wissen wie man tatsächlich int zu wchar_t konvertieren zw. eben casten kann!Vielen Dank im Vorraus!
-
Falls es dir darum geht den Wert von deinem Int als Zeichenkette zu erhalten
könntest du Sprintf verwenden.
-
Wenn du wirklich einen int in einen wchar_t* umwandeln willst, dann geht das so reinterpret_cast< wchar_t >( 0 )* wobei du für 0 deinen Integer angibst.
-
User--- schrieb:
Wenn du wirklich einen int in einen wchar_t* umwandeln willst, dann geht das so reinterpret_cast< wchar_t >( 0 )* wobei du für 0 deinen Integer angibst.
Hab ich die Ironie überhört oder meinste da ernst?

-
FireFlow schrieb:
User--- schrieb:
Wenn du wirklich einen int in einen wchar_t* umwandeln willst, dann geht das so reinterpret_cast< wchar_t >( 0 )* wobei du für 0 deinen Integer angibst.
Hab ich die Ironie überhört oder meinste da ernst?

das entspricht der Frage bis aufs wort.
-
otze schrieb:
FireFlow schrieb:
User--- schrieb:
Wenn du wirklich einen int in einen wchar_t* umwandeln willst, dann geht das so reinterpret_cast< wchar_t >( 0 )* wobei du für 0 deinen Integer angibst.
Hab ich die Ironie überhört oder meinste da ernst?

das entspricht der Frage bis aufs wort.
Tjo aber ich denke wir wissen was er gemeint hat...

Achja villeicht so...?
template<class char_type> basic_string<char_type> int2string(int num) { basic_ostringstream<char_type, char_traits<char_type>, allocator<char_type> > stream; stream << num; return stream.str(); } wstring str = int2string<wchar_t>(123); wchar_t const* p = str.c_str();
-
Danke für den tollen Ansatz!
aber wie würde das auch in einem anderen Namespace funktionieren ("vgui")Achja und nur mal so nebenbei - von welcher Bedeutung ist es, dieses Stück Code zu verstehen? - Sehr viel konnte meine Logik nämlich leider nicht damit anfangen
-
dann solltest du dich evtl. nochmal mit streams & strings auseinandersetzen...
-
Tja das "Problem" is, dass ich mich hier in einem SDK befinde und ich das ganze File nicht selbst erstellt habe, sondern eher nur etwas anpasse. (Und dabei im namespace bin etc.)
Ich hab mich jetzt schon von heute 0:30 bis 2:00 und heute Vormittag bis jetzt damit herumgeschlagen - deswegen hab ich ja auch hier gefragt weil mir auch 100 Google Seiten noch nicht wirklich Aufschluss gegeben haben
Wenn ich dazu wirklich noch viel über streams und strings lernen muss - gut, ich habe bis jetzt nur mit Tutorials gelernt - wenn ich das hier direkt aber erst nirgends finde... (Natürlich werd ich es nirgends "direkt" finden, aber ich wollte zumindestens irgendwas Verständliches mit wchars; Bis jetzt hab ich dazu immer nur "strings" gefunden; Die kann ich aber erst wieder irgendwie nicht nehmen wegen dem namespace; außerdem nimmt die Funktion [vorgegeben vom SDK] nur wchar_t pointer -
)
-
Sry für Doppelposting aber ich weiß nicht weiter
Kann mir denn nicht irgendjemand eine Lösung geben, die auch bei einem anderen namespace funktioniert bzw. was ich falsch machen könnte mit den includes etc.
Ich komme übrigens nicht "ins" std namespace mit
namespace std { ... }- z.B. cout wird dann nicht gefunden (error C2065: 'cout': nichtdeklarierter Bezeichner)
Desweiteren hab ich hier einen weiteren Ansatz:
namespace std { wchar_t int2wchar_p ( int i ) { char buffer[33]; itoa( i, buffer, 10 ); wchar_t Widen[33]; _USE(cout.getloc(), ctype<wchar_t> ).widen(buffer, buffer+6, Widen); return Widen; } }Wahrscheinlich ist der Code Mist, aber trotzdem würd ich gern aus meinen Fehlern lernen
-
#include <sstream> #include <string> namespace foo { //original: template<class char_type> std::basic_string<char_type> int2string(int num) { std::basic_ostringstream<char_type, std::char_traits<char_type>, std::allocator<char_type> > stream; stream << num; return stream.str(); } //kann der msvc glaub ich nicht template<class T,class F> T string_cast(const F& f); template<class C,class T> std::basic_string<C,std::char_traits<C>,std::allocator<C> > string_cast<std::basic_string<C,std::char_traits<C>,std::allocator<C> >,T>(const T& t) { basic_ostringstream<C,std::char_traits<C>,std::allocator<C> > stream; stream << num; return stream.str(); }; //sollte auch beim msvc gehen template<class T,class F> struct help; template<class C,class T> struct help<std::basic_string<C,std::char_traits<C>,std::allocator<C> >,T> { static std::basic_string<C,std::char_traits<C>,std::allocator<C> > string_cast(const T& t { basic_ostringstream<C,std::char_traits<C>,std::allocator<C> > stream; stream << num; return stream.str(); }; }; template<class T,class F> T string_cast2(const F& f) { return help<T,F>::string_cast(f); }; };Eventuell den parameter f noch in type_traits::parameter_type wrapen. Ich hoffe das geht, ist immer ein bisschen gebastel.
-
Danke für die Antwort!
Aber leider habe ich trotzdem nach wie vor den Error c:\HLModding\bunkerrush\src\cl_dll\hud_money.cpp(191): error C2039: 'basic_string': Ist kein Element von 'std'
(btw - ich hab die zwei anderen arten einfach mal auskommentiert - die hätten ansonsten natürlich auch geschrien)So langsam glaube ich dass es eher an der SDK Umgebung liegt, weil die includes scheinbar nix bewirken (?!)