关闭

C++ Cstring 转 const * char (Unicode 及非Unicode)

标签: unicodecstring
566人阅读 评论(0) 收藏 举报
分类:

Unicode 编码的:

最简单的办法

#include<AtlBase.h>

CString m_toSend = "中文";

USES_CONVERSION;

char *psz = T2A(m_toSend);

复杂点的办法:

//   Setlocale,本函数用来配置地域的信息,设置当前程序使用的本地化信息。配置地域化信息函数 #include <locale.h>

const wchar_t* wstr = (LPCTSTR)m_toSend;     //一定得是unicode,否则这句话会错的
size_t strsize = (m_toSend.GetLength() + 1) * 2; // 宽字符的长度;
char * pstr = new char[strsize];
memset(pstr, 0, strsize);

size_t n=0;

setlocale(LC_ALL, "zh-CN");//调用wcstombs之前先调setlocale(LC_ALL, "zh-CN");否则wcstombs不会处理超过255的字符
int a =wcstombs_s(&n, pstr, strsize, wstr,_TRUNCATE );  //如果有中文最后一个参数不能用wcslen(wstr)来当最大字节数,会漏数据,用默认的_TRUNCATE 就可以

待研究的:

//WideCharToMultiByte()


非Unicode 编码

1 string to CString   

  CString.format("%s",string.c_str()); 

2 CString to string

string str(CString.GetBuffer(str.GetLength()));

3 string to char *

char *p=string.c_str();

4 char * to string

string str(char*);

5 CString to char *

strcpy(char,CString,sizeof(char));

6 char * to CString

CString.format("%s",char*);

 CString的format方法是非常好用的。string的c_str()也是非常常用的,但要注意和char *转换时,要把char定义成为const char*,这样是最安全的。以上函数UNICODE编码也没问题:unicode下照用,加个_T()宏就行了,像这样子_T("%s")

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3775次
    • 积分:89
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:6篇
    • 译文:0篇
    • 评论:1条