char* in wchar_t* casten
-
Hallo nochmal,
kurz und knapp:
Wie kann ich in C++ allein durch die Standard-Bibliotheken einen char* in einen wchar_t* casten?
-
schau mal in die c++ faq
-
Hallo nochmal,
hab`s im FAQ-Archiv gefunden aber leider funktioniert folgende Zeile bei mir nicht:
use_facet<ctype<wchar_t> > (cout.getloc()).widen(Narrow, Narrow+6, Widen);Weißt du warum?
-
Jetzt wäre es noch hilfreich, (a) diese Zeile im Zusammenhang zu sehen und (b) zu wissen, was daran nicht funktioniert?
(PS: Verwendest du zufällig MSVC? Der kommt mit use_facet<> nicht zurecht und benötigt deshalb die Variante mit _USE(...).
-
Nein, ich verwände GCC, das Programm beendet einfach ohne etwas mitzuteilen und es sieht wie folgt aus:
#include <cstdlib> #include <iostream> using namespace std; int main() { char Narrow[6] = "Hallo"; wchar_t Widen[6]; use_facet<ctype<wchar_t> > (cout.getloc()).widen(Narrow, Narrow+6, Widen); system("PAUSE"); return EXIT_SUCCESS; }
-
was daran liegt, dass du nix ausgibst
use_fact usw. macht nix anderes, als den inhalt von Narrow nach Widen zu schieben und dabei die konvertierung nach wchar_t vorzunehmen.
-
ja das schon aber der Aufruf von system("PAUSE") sollte das Programm 'anhalten' damit es nicht sofort beendet.
-
Naja, das hat ja nichts mit C++ zu tun...
-
Naja aber weißt du denn woran es dann liegt?
-
deine standard lib unterstützt wahrscheinlich keine wchar_t facets, sobald du use_facet<ctype<wchar_t> > nutzt, wird deswegen eine std::bad_cast exception geworfen. versuch mal nen try{}catch(...) block um dein programm zu basteln, und schau mal ob du was fängst
