6.09.2007

MultiByteToWideChar - convert char* to WCHAR

以往C的string是用 char*,在 VC 的各類control 中,是用WCHAR (因為多國語言的關係)。
要將 char* 字串轉為 WCHAR 字串的方法是:
char buffer[BUFFERLEN];
WCHAR wbuffer[BUFFERLEN*2];

... fill datas in buffer[]...
// convert
MultiByteToWideChar(CP_ACP, 0, buffer,strlen(buffer),wbuffer,sizeof(wbuffer));
// done!
  • WCHAR,一個''字''需要用兩個character來代,所以bufferlen 要 X2。
  • function 的第一個argument 是 CodePage,以往這種 char * string 都是 ANSI (ASCII) ,所以就用CP_ACP。
ref : MSDN http://msdn2.microsoft.com/en-us/library/ms776413.aspx

這個function 要注意 第4個argument ,決定要轉換的字數,所以要用 strlen( ),不要用sizeof( ),否則轉出來的 wbuffer 後面會有一堆亂碼。

沒有留言: