Archiv verlassen und diese Seite im Standarddesign anzeigen : "string" zu "string" umwandlung
Matrix316
2007-01-11, 17:10:54
Wie wandle ich denn:
char text[10]
am einfachsten zu
const WCHAR* textneu
?
Ein Versuch mit:
WCHAR* text_x;
wctomb(text,*text_x);
const WCHAR* textneu = text_x;
Funktioniert nicht so richtig.
EDIT:
Das hier geht leider auch nicht.
char text[10] = "Hallo";
const WCHAR *lstrg = NULL;
wcstombs(text,lstrg,sizeof(text));
Könnte aber sein, dass dort irgendwo ein Fehler ist.
Ich denke du benutzt die Funktion für die umgekehrte Richtung, das wäre die richtige:
http://msdn2.microsoft.com/en-us/library/k1f9b8cy(VS.80).aspx
Benutzt hab ich sowas noch nie, musst selber gucken ob es wirklich so ist.
Matrix316
2007-01-11, 18:49:09
Hm, funzt auch nicht so richtig:
char text[11] = "1234567890";
wchar_t *lstrg = NULL;
mbstowcs(lstrg,text,10);
printf("%s",lstrg);
Bekomme (null) als Ausgabe von printf...
Das ist die dokumentierte Verhaltensweise, wenn man es so aufruft wie du es tust. Beschreibung lesen hilft ;)
del_4901
2007-01-11, 19:01:59
Wenn du nur mit Literalen arbeitest, kannst du auch
wchar_t bla[] = L"Hallo";
schreiben.
Matrix316
2007-01-11, 19:13:18
Das Problem ist, ich lese Strings aus einem Textfile und muss diese dann zu WCHAR * konvertieren (alternativ auch const WCHAR*) um diese dann in der GDI+ Methode DrawString zu verwenden zu können.
FILE *stream;
char line[11];
stream = fopen( "c:\\ptswerte.txt", "r" )
fgets( line, 11, stream );
jetzt umwandeln und dann einsetzen in:
Status DrawString( const WCHAR *string,
INT length,
const Font *font,
const RectF &layoutRect,
const StringFormat *stringFormat,
const Brush *brush
);
EDIT:
Irgendwie blick ich da nicht ganz durch mit der oberen Funktion. Gibts nicht eine Anleitung zur Anleitung, die etwas einfacher ist? ;)
Jedenfalls bekomm ich jetzt eine 1 als Ausgabe:
size_t size;
char text[11] = "1234567890";
WCHAR *lstrg = NULL;
int requiredSize = mbstowcs(NULL, text, 0);
lstrg = (wchar_t *)malloc( (requiredSize + 1) * sizeof( wchar_t ));
size = mbtowc(lstrg,text,requiredSize +1);
_cprintf("%s",lstrg);
Matrix316
2007-01-11, 19:25:47
Juhu! Habs:
size_t size;
WCHAR *lstrg = NULL;
int requiredSize = mbstowcs(NULL, line, 0); //line ist Text aus file
lstrg = (wchar_t *)malloc( (requiredSize + 1) * sizeof( wchar_t ));
size = mbstowcs(lstrg,line,strlen(line)+1);
EDIT: Eine Zusatzfrage:
Kann ich eigentlich nicht mit WCHAR einen Array erstellen:
WCHAR array[100];
um dann sowas wie
array[index] = *lstrg ;
zu machen?
Irgendwie bekomm ich nur Quatsch, wenn ich auf array[0] oder so zugreife.
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.