Avatar billede klasker Nybegynder
18. maj 2004 - 13:27 Der er 7 kommentarer og
1 løsning

Converter wchar_t* til char*

Hey, jeg har en del af disse latterlige wchar_t* strings som jeg gerne vil have lavet om til char*.
Jeg har prøvet at typecaste den med (char*), men det gik helt galt.

På forhånd tak.
PS. Jeg bruger C++ (ikke C), hvis det skulle være relavant.
Avatar billede arne_v Ekspert
18. maj 2004 - 13:42 #1
Prøv wcstombs eller WideCharToMultiByte (virker selvfølgelig ikke hvis du har
kinesiske eller japanske tegn)
Avatar billede klasker Nybegynder
18. maj 2004 - 14:05 #2
Virker ikke.. WideCharToMultiByte tager en million parametre som jeg ikke aner hvad jeg skal gøre med, og wcstombs crasher mit program :(
Avatar billede arne_v Ekspert
18. maj 2004 - 14:13 #3
wchar_t *foo;
char *bar = new char[2*wcslen(foo)];
wcstombs(bar, foo, sizeof(bar));
// brug bar
delete[] bar;
Avatar billede bertelbrander Novice
18. maj 2004 - 19:14 #4
>> Arne
- jeg tror ikke du mener sizeof(bar)
- jeg tror du mener 2*(wcslen(foo) +1), +1 pga. nul terminering
- jeg ved ikke hvorfor der er 2*
Avatar billede arne_v Ekspert
18. maj 2004 - 19:17 #5
wchar_t *foo;
char *bar = new char[2*wcslen(foo)+1];
wcstombs(bar, foo, 2*wcslen(foo)+1);
// brug bar
delete[] bar;

er nok bedre ja.

2* p.g.a. risikoen for kinesiske/japanske/whatever tegn
Avatar billede klasker Nybegynder
18. maj 2004 - 21:12 #6
Tak for hjælpen, nu virker det :o)

PS. Læg et svar ;)
Avatar billede arne_v Ekspert
18. maj 2004 - 21:14 #7
Ret beset skulle Bertel have halvdelen, men han plejer ikke at tage imod point.
Avatar billede segmose Nybegynder
19. maj 2004 - 08:53 #8
Så mangler der vel også
#if (sizeof(wchar_t) != 2)
#error
#endif
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester