c++初学者

专注技术开发

UNICODE串转换成char类型串的四种方法[转]

1. 调用 WideCharToMultiByte() API

int WideCharToMultiByte (
    UINT    CodePage,                
//1 Unicode编码的字符页,Unicode编码有字符页的概念,比如gb2312/936,big5/950等
    DWORD   dwFlags,                //2 如何处理复合unicode字符,详细查google
    LPCWSTR lpWideCharStr,        //3 待转换的unicode串
    int     cchWideChar,                //4 表示参数3的长度  传递-1表示以0x00结尾
    LPSTR   lpMultiByteStr,            //5 接受转换后的串的字符缓冲
    int     cbMultiByte,                    //6 表示参数5lpMutiByteStr的字节大小 通常sizeof一下
    LPCSTR  lpDefaultChar,        //7 NULL 具体google
    LPBOOL  lpUsedDefaultChar//8 NULL 具体google
);

2. 调用CRT函数wcstombs()

size_t wcstombs (
    
char*          mbstr,
    
const wchar_t* wcstr,
    size_t         count );

3. 使用CString构造器或赋值操作

// 假设有一个Unicode串wszSomeString

CString str1 ( wszSomeString ); 
// 用构造器转换
CString str2;

str2 
= wszSomeString; // 用赋值操作转换

4. 使用ATL串转换宏

#include <atlconv.h>

// 还是假设有一个Unicode串wszSomeString

{
    
char szANSIString [MAX_PATH];
    USES_CONVERSION; 
// 声明这个宏要使用的局部变量

    lstrcpy ( szANSIString, OLE2A(wszSomeString) );
}

posted on 2008-09-27 18:11 大海 阅读(1036) 评论(0)  编辑 收藏 引用 所属分类: VC++C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理