PWSTR pwstr ; size_t size = string . length ( ) ; wchar_t * buffer = new wchar_t [ size + 1 ] ; MultiByteToWideChar ( CP_ACP , 0 , string . c_str ( ) , size , buffer , size * sizeof ( wchar_t ) ) ; buffer [ size ] = 0 ; pwstr = buffer ; //这一步已经转化完成 //理论上说delete了比较好。但是我跑的时候delete了反而报错...不想折腾了,就这样了吧 //delete buffer; 在处理中文时有时需要进行wchar_t,char, string ,w string 之间的转换。 其中char和 string 之间、wchar_t和w string 之间的转换较为简单,代码在vs2010下测试通过。 代码如下:#include <iostream>#include < string >#include <tchar>#include <Windows> using namespace std; //Converting a WChar string to a Ansi string char *w2c(char *pcstr,const wchar_t * pwstr , size_t l 不知道是不是ACM以来的习惯的问题,本人从来就是char*,wchar_t*,TCHAR*。。。不常用PSTR、LPSTR这些。。。 下面做下简单总结 typedef char CHAR; typedef wchar_t WCHAR; #define CONST const typedef CHAR* PCHAR,*PCH,*LPCH,*NPSTR,*PSTR,*LPSTR; typede 先从ascii编码开始,ascii使用7位来表示128个基础字符,如大小写英文字母等等 中国人通过对ascii编码进行扩展,发明了 GB2312 编码,以表示6000多个常用汉字。 但是汉字很多,包括繁体和各种字符,于是产生了 GBK 编码,它包括了 GB2312 中的编码,同时扩充了很多。所以GB2312是GBK编码的子集。 中国是个多民族国家,各个民族几乎都有自己独立的语言系统,为了表示那些字符,继续把 GBK 编码扩充为 GB18030 标题   对论坛中有关数据类型转换的总结     visiond [原作]  关键字   类型 转换 VC 总结 类型转换 出处      对论坛中有关数据类型转换的整理整理:Vision Deng--------------------------------------------------------------------------------说明:本文纯粹是总结一下有关类型转换的 在c++中我想把 PWSTR objectIDArray[NUM_OBJECTS_TO_REQUEST]中内容写到一个txt文档中。在debug的时候,我看到objectIDArray[NUM_OBJECTS_TO_REQUEST]中的内容是如下的: 我想写出来的内容是“o355”,"o356",他们是文件的唯一标示符。 由于某些原因没能使用C String 去处理。所以用了一个笨方法去处理。 最近在使用VS2010 提示错误 : error C2664: 'LoadImageW' : cannot convert parameter 2 from 'char [20]' to 'LPCWSTR'“char [20]”转换为“LPCWSTR”      问题的原因:VS2010默认采用宽字符UNICODE编码方式,定义了Unicode,因此相关的字符串必须为unicode字符串 C String 与LPCWSTR、L PWSTR 等数据类型的 转化 之前我遇到过类似的问题,在以前两篇博文中也提到过类似编码问题:VC6.0设定UNICODE编译环境、VC中_T("")与L区别,但是都没有涉及到这些数据类型的转换。 1. C String 与LPCWSTR的转换 LPCWSTR 是Unicode字符串常量指针,初始化时串有多大,申请空间就有多大,以后存储若超过则出现无法预料的结果         环境:Dev cpp 平台i386         C++标准中,wchar_t是宽字符类型,每个wchar_t类型占2个字节,16位宽。汉字的表示就要用到wchar_t 。char,我们都知道,占一个字节,8位宽。其实知道了这个以后,要在wchar_t 和 char两种类型之间转换就不难实现了。         wchar_t 转换为char 的代码如下:         有如下 Getting Applicateion Data Folder Paths Win32 #include &lt;shlobj.h&gt; //link with shell32.lib PWSTR pSzFolderPath = NULL; if(succeeded(SHGetKnownFolderPath( FOLDERID_ProgramData,0,NULL,&amp;pSz... typedef unsigned char TCHAR; #endif typedef unsigned char CHAR; typedef unsigned wchar_t W