widestrings in einfache strings konvertieren
-
in der msdn find ich ja nix zu diesen einzelheiten...oder bin ich blind
-
Mit %ls funktioniert das auch.
-
Rio1 schrieb:
ehrlich wo denn genau. für mich sieht das alles wie konvertierung string in widestring aus. wie müsste dann danach mein Code aussehen?:
use_facet<ctype<wchar_t> > (cout.getloc()).widen(sbuffer,sbuffer*2,buffer)
eigentlich sieht der code fast genauso aus:
wchar_t wstring[6] = L"Hallo"; char string[6]; use_facet<ctype<wchar_t> > (cout.getloc()).narrow(wstring, wstring+6,'?', string);
-
danke, aber geht das auch mit embedded VC++? Welche header müssen dazu eingebunden werden (das use_facet, ctype ... werden als compilererror angezeigt)
-
müsste <locale> sein
-
#include <locale.h> konnte ich zwar einbinden aber folgende Compiliermeldung:
errorC2065: 'use_facet' : undeclared identifier errorC2065: 'ctype' : undeclared identifier errorC2275: 'wchar_t' : illegal use of this type as an expression errorC2059: syntax error : '>'klappt irgendwie nicht damit.
-
Die Sachen sind bei mir (gcc 3.4.2 mit CodeBlocks) in iostream. Wobei der beim Ausführen von Otzes Code mit "abnormal program termination" rausgeht.
-
Ich habs gerade nochmal mit dem BCB6 probiert und da geht es.
-
Aber embedded VC++ scheint das nicht zu wollen. Komisch, die locale lässt sich ja einbinden. Kann auch sein, dass die bei embedded nur in abgespeckter Form vorhanden ist.
-
...muss eigentlich nach solchen aktionen:
char* test = new char[20]; wchar_t* wtest = L"Hallo"; sprintf(test,"%s",wtest);nicht unbedingt ein free(test) folgen ?
-
nein. delete[]