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

原创 2016年08月30日 10:38:43

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")

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

CString与const char*的相互转换

前篇: ①CString强制类型转换为const char*,在变量前加上:(char *)(LPCTSTR),这样做虽不会报错,但其转换后的值可能是乱码,不推荐这样做! ②利用中间变量(string...

C++字符串之间转化——Unicode字符集

本文主要介绍:Unicode字符集下字符串之间以及字符串与数字之间的转化。 1.string、char*与 const char* string->char*char *ctr = new cha...

CString与const char*转换

LPCTSTR 与 GetBuffer(int nMinBufLength)  这两个函数提供了与标准C的兼容转换。在实际中使用频率很高,但却是最容易出错的地方。这两个函数实际上返回的都...

CString转换成const char*的一种有效方法

在Visual Studio 200X下,CString直接转换成const char* 有点困难,下面是自己用的一种可行方案: //得到目录路径 CString mPath=dlg.Ge...

CString和string在unicode与非unicode下的相互转换

CString和string在unicode与非unicode下的相互转换 最近想写一个手机控制电脑的玩具,涉及到了socket通信,数据采用json通用格式,首先是jsoncpp的编译问题太烦了,...

C++中 Unicode 与 UTF-8 编码互转

1、简述最近在发送网络请求时遇到了中文字符乱码的问题,在代码中调试字符正常,用抓包工具抓的包中文字符显示正常,就是发送到服务器就显示乱码了,那就要将客户端和服务器设置统一的编码(UTF-8),而我们程...

CString 和 const char* 的相互转化(UNICODE)

1. const char* To CString const char* c;c = "abcdef";CString s;int len = strlen(c);TCHAR* c1 = (TCHA...
  • cosair
  • cosair
  • 2010年04月12日 09:14
  • 2836

【MFC】 Unicode下CString和char *之间的互相转换

支持中文 使用WideCharToMultiByte(); char * CstringToChar(CString str) { int n = str.GetLength(); //获取str的...

UniCode 下 CString 转 char* 的方法

今天进行文件操作时,将CString的GetBuffer()后直接倒到char数组后写入文件发现 每个字符与字符之间都有一个空格存在,而且有内容丢失。原来CString类对象GetBuffer(),后...
  • neverup_
  • neverup_
  • 2010年06月11日 17:21
  • 30211
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ Cstring 转 const * char (Unicode 及非Unicode)
举报原因:
原因补充:

(最多只允许输入30个字)