widechartomultibyte,widechartomultibyte 转ansi
WideCharToMultiByte导入头文件为什么还是不能用
WideCharToMultiByte
函数功能:该函数映射一个unicode字符串到一个多字节字符串。
函数原型:
int WideCharToMultiByte(
UINT CodePage, //指定执行转换的代码页
DWORD dwFlags, //允许你进行额外的控制,它会影响使用了读音符号(比如重音)的字符
LPCWSTR lpWideCharStr, //指定要转换为宽字节字符串的缓冲区
int cchWideChar, //指定由参数lpWideCharStr指向的缓冲区的字符个数
LPSTR lpMultiByteStr, //指向接收被转换字符串的缓冲区
int cchMultiByte, //指定由参数lpMultiByteStr指向的缓冲区最大值
LPCSTR lpDefaultChar, //遇到一个不能转换的宽字符,函数便会使用pDefaultChar参数指向的字符
LPBOOL pfUsedDefaultChar //至少有一个字符不能转换为其多字节形式,函数就会把这个变量设为TRUE
);
参数:
CodePage:指定执行转换的代码页,这个参数可以为系统已安装或有效的任何代码页所给定的值。你也可以指定其为下面的任意一值:
CP_ACP:ANSI代码页;CP_MACCP:Macintosh代码页;CP_OEMCP:OEM代码页;
CP_SYMBOL:符号代码页(42);CP_THREAD_ACP:当前线程ANSI代码页;
CP_UTF7:使用UTF-7转换;CP_UTF8:使用UTF-8转换。
VC6.0 怎么使用 WideCharToMultiByte 函数
一般的使用方法是调用两次,
第一次获取需要分配内存的大小
分配完成后第二次在调用进行实际的转换
wchar_t?*src;
char?*dest;
int?cch;
?
cch?=?WideCharToMultiByte(CP_ACP,?0,?src,?-1,?NULL,?0,?NULL,?NULL);
dest?=?new?char[cch];
WideCharToMultiByte(CP_ACP,?0,?src,?-1,?dest,?cch,?NULL,?NULL);
错误 92 error C2664: “WideCharToMultiByte”: 不能将参数 3 从“unsigned short *”转换为“LPCWSTR”
试一试
use std::wstring
或者
按alt+f7 然后去configuration properties - general 把"character set" 从 unicode 改为multibyte.
delphi widechartomultibyte 引用哪个单元
WideCharToMultiByte 函数定义于 WinApi.Windows 单元(早期delphi版本在可能在 windows 单元),其函数原型定义如下:
function?WideCharToMultiByte;?external?kernel32?name?'WideCharToMultiByte';