宽字符问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 19:33:16
为什么要有个宽字符wchar_t,假如说是char不是一样的,
char my[4]="w我";也可以定义unicode字符,那为什么还要用宽字符,高手帮下忙,以后加分
能不能再详细点,比如说char my='A'这个是ANSI字符,但是char my="我"是ANSI还是UNICODE字符,还有使用wchar_t变量的时候怎么初始化,是wchar_t buffer[2]="我";但是wchar_t是个unsigned short,所以应该不能这样赋值的,那应该怎么样赋值

宽字符直接指定内码用unicode,譬如"A"就是个unicode,字符内码不一样不能混用的,不是说指定2个空间的字符串就是宽字符了
有两个Win32 API可以转换ANSI字符和UNICODE字符:
int WideCharToMultiByte(
UINT CodePage,
DWORD dwFlags,
LPCWSTR lpWideCharStr,
int cchWideChar,
LPSTR lpMultiByteStr,
int cbMultiByte,
LPCSTR lpDefaultChar,
LPBOOL lpUsedDefaultChar
);

int MultiByteToWideChar(
UINT CodePage,
DWORD dwFlags,
LPCSTR lpMultiByteStr,
int cbMultiByte,
LPWSTR lpWideCharStr,
int cchWideChar
);
函数的功能字面就能看出来了,WideChar是unicode
参数的API可以去查MSDN