CString转char*,复制

来源:互联网 发布:centos ip 命令不存在 编辑:程序博客网 时间:2024/05/29 02:35

首先要先确定项目的字符集是多字节字符集还是Unicode字符集

字符集设置如下:


1.对于多字节,CString转char*如下:

CString cs = "abcdef;

char c_arr[30];

strcpy(c_arr,(LPCTSTR)cs);

2.对于Unicode字符集,需要多做一步,将Unicode转多字节字符,使用函数:

int WideCharToMultiByte(

UINT CodePage,// code page,一般设为CP_ACP

DWORD dwFlags,// performance and mapping flags,一般设为0

LPCWSTR lpWideCharStr,// wide-character string,指定一个宽字符串

int cchWideChar,// number of chars in string,宽字符串的长度(字符数)

LPSTR lpMultiByteStr,// buffer for new string,存放转换后的多字节字符串缓存区

int cbMultByte,// size of buffer,多字符串缓存区的最大长度(字节数)

LPBOOL lpUsedDefaultChar// set when default char used,如果有字符转换失败,则为TRUE,一般设为NULL

);

CString cs = "abcdef;

char c_arr[30] = {'0'};

WideCharToMultiByte(CP_ACP, 0, cs, cs.GetLength, c_arr, 30, TRUE);


WideCharToMultiByte()
0 0