Char* ,CString ,WCHAR*之间的转换
关于Char* ,CString ,WCHAR*之间的转换问题
GDI+所有类的接口函数如果要传递字符串作为参数的话,似乎都用UNICODE串,即WCHAR*。我开始也被整得晕头转向,因为窗口编程所用往往是CString,用IO流读文件数据又得到char *。得益于网上牛人们的总结,我用到以下几种基本方法去实现三者间的转换:
char * 转WCHAR *:
::MultiByteToWideChar(CP_ACP,0,(const char *)res,int count,char * dest,int count);
类似地,WCHAR *转char *:
WideCharToMultiByte(CP_ACP, 0,.........);
CString 转WCHAR *:
wchar_t * p=str.AllocSysStrinig()
也有A2W(str)的,但是要包括ATL转换头文件#include;
并且在A2W前使用USES_CONVERSION宏。
其它:
char*转CString:
除了直接赋值外,还可使用CString::Format进行。
如char * p="sfdasf";
CString str=p; 或者str.Format("%s",p);
CString 转char *
1.直接强制类型转换:
CString ss="sfasf";
char *p=(LPSTR)(LPCSTR)ss;
2.CString::GetBuffer或LockBuffer
char * p=str.GetBuffer();
char * pt=str.LockBuffer();
WCHAR *转CString
在网上没有找到相关的文档,想想应该是可以直接赋值的
但是试验发现虽无编译错误,但是用中文的时候却生乱码,用字母的时候却是正常,想其中肯定没有错误,只是用MessageBox显示的时候乱码应该有其它原因,比如说使用了双字节字符集DBCS来显示汉字(纯属猜测而已)。总体来说在Windows编程中:#define UNICODE
则CString .TCHAR,等均用的是UNICODE码,一个字符占两个字节。
本文来源于编程启航吧
原文地址:http://www.prm8.com/a/bianchengjingyan/vc/1234/
相关文章
- bbox的各种格式转换(detectron2函数库)
- 【miscellaneous】【C/C++语言】UTF8与GBK字符编码之间的相互转换
- NLP-文本处理: 预处理步骤【删除停用词、删除多余的空间、将数字转换为其文本表示形式、小写文本、将标点符号与单词分开、抽词干、词形归一、拼写检查】
- Pandas-高级处理(四):分组与聚合【分组:groupby、聚合统计:max/min/mean...、分组转换:transform、一般化Groupby方法:apply】【抛开聚合只谈分组没意义】
- Matlab实现二进制矩阵转换为十进制
- Java List和Array之间的转换
- Unity 屏幕坐标系 UGUI坐标 世界坐标 三种坐标系之间的转换 以及 localToGlobal 和 globalToLocal
- mybaits 使用typeHandler实现日期类型的转换
- VC中CString和WPARAM之间的相互转换
- Java-synchronized 中锁的状态及其转换
- JSONObject,JSONArray,Map,String之间转换
- mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换等
- 包装类Integer和String互相转换
- java和js中JSONObject,JSONArray,Map,String之间转换
- python rgb2gray 将rgb图像转换为gray图像
- Ansi、Unicode、UTF8字符串之间的转换和写入文本文件
- Byte[]、Image、Bitmap_之间的相互转换
- 使用jaxb进行xml到bean的转换(尝试解决空值不显示问题)
- Java ffmpeg视频抽帧/转换遇到问题及解决
- python字符串/Bytes/16进制/x01等之间的转换
- python:将一个文件转换为二进制文件(binary)
- 使用poi将excel转换为html,适用本身有导出excel的而现在需要添加网页打印的功能
- 转:Python常见字符编码及其之间的转换
- java:基本数据类型和字符串String的转换
- CentOS7图形化界面和命令行界面之间的转换
- C语言实现GBK/GB2312/五大码之间的转换(转)
- Java 基础类型转换byte数组, byte数组转换基础类型
- C++中字符编码的转换(Unicode、UTF-8、ANSI)
- 深入理解c++中char*与wchar_t*与string以及wstring之间的相互转换
- 字符编码知识:Unicode、UTF-8、ASCII、GB2312等编码之间是如何转换的?
- Char* ,CString ,WCHAR*之间的转换
- mysql 时间函数转换
- 深入理解c++中char*与wchar_t*与string以及wstring之间的相互转换