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码,一个字符占两个字节。
Char* ,CString ,WCHAR*之间的转换的更多相关文章
- 关于Char* ,CString ,WCHAR*之间的转换问题
GDI+所有类的接口函数如果要传递字符串作为参数的话,似乎都用UNICODE串,即WCHAR*.我开始也被整得晕头转向,因为窗口编程所用往往是CString,用IO流读文件数据又得到char *.得益 ...
- wchar_t char string wstring 之间的转换
wchar_t char string wstring 之间的转换 转:http://blog.csdn.net/lbd2008/article/details/8333583 在处理中文时有时需要进 ...
- QString和char字符串数组之间的转换 (转)
做串口通信时,碰到这样的问题,在Qt的界面中,我用QLineEdit对象负责显示发送和接收的文本,对其中的数据进行读取和显示使用的数据类型都是QString:但是,在对串口设备进行读写时,数据使用的形 ...
- C#中char[]与string之间的转换;byte[]与string之间的转化
目录 1.char[]与string之间的转换 2.byte[]与string之间的转化 1.char[]与string之间的转换 //string 转换成 Char[] string str=&qu ...
- char* 、const char*和string之间的转换
1. const char* 和string 转换 (1) const char*转换为 string,直接赋值即可. EX: const char* tmp = "tsinghua ...
- C++中char*与wchar_t*之间的转换
http://blog.163.com/tianshi_17th/blog/static/4856418920085209414977/ 关于C++中的char*与wchar_t*这两种类型的相互转换 ...
- C#中char[]与string之间的转换
string 转换成 Char[] string ss = "abcdefg"; char[] cc = ss.ToCharArray(); Char[] 转换成string st ...
- QString和char字符数组之间的转换(QTextCodec.toUnicode方法,特别注意\0的问题)
How can I convert a QString to char* and vice versa ?(trolltech) Answer:In order to convert a QStrin ...
- Qt中Qstring,char,int,QByteArray之间到转换(转)
11.各种数据类型的相互转换char * 与 const char *的转换char *ch1="hello11";const char *ch2="hello22&qu ...
随机推荐
- PhoneGap 3 在 Mac 上安装使用
1.下载安装 NodeJS . 2.安装 PhoneGap.打开终端执行: 1 $ sudo npm install -g phonegap 3.PhoneGap 3 不需要在Xcode中创建,而是在 ...
- hdu 1827
强连通分量——tarjin算法: 这题的思路就是找出多少个出度为0的连通分量,结果就是这些连通分量的元素的最小值相加: 一道很简单的题,改了我好久,= =!~ 贴代码: #include<cst ...
- Code First:如何实现一个主类中包含多个复类
假设我们在程序中要用到的类的结构是这样的,这里比较特别的是B在A中出现了最少两次 public class B { [Key] public int Id { get; set; } public s ...
- 剖析ECMALL的登录机制
在ecmall.php文件中实例化控制器类,每一个控制器类,必须继承(extends)upload\admin\app\backend.base.php文件.在继承中调用方法是谁先被继承谁的方法被先调 ...
- SessionId
http://www.codeweblog.com/session-cookie-jsessionid-url-rewriting/
- com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: SELECT command denied to user’
Linux环境 Mysql+Hibernate command denied to user 错误 错误信息 如下: com.mysql.jdbc.exceptions.jdbc4.MySQLSynt ...
- 三年所有JAVA技术文档列表
学习工作流workflow管理基础概念.pdf 深入浅出Struts2(PDF).zip 深入浅出Hibernate.pdf 敏捷软件开发:原则.模式与实践.rar 精通Oracle.10g.Pl.S ...
- show processlist 输出ID 和 information_schema.PROCESSLIST 的id,information_schema.innodb_trx的TRX_MYSQL_T
Session 1: mysql> start transaction; Query OK, 0 rows affected (0.00 sec) mysql> update Client ...
- android Button隐藏
两种方式: xml方式 和 java代码方式: 可见(visible) XML文件:android:visibility="visible" Java代码:view.setVisi ...
- 在linux系统下怎么安装两个nginx
在linux下安装nginx的时候,一般在./configure的阶段会要求通过prefix设置安装路径.因此,在./configure的时候指定不同的prefix就可以安装多个nginx啦. 值得注 ...