一、LPSTR LPCSTR LPTSTR LPCTSTR等

确定的类型:
LPSTR = CHAR * = char *
LPCSTR = const CHAR * = char * //c意为const 
不确定类型(可变型):
LPTSTR = LPWSTR = WCHAR * = wchar_t * //(Unicode编码)
= LPSTR = CHAR * = char * //(多字节编码) TCHAR = wchar_t //Unicode编码
= char //多字节编码  

二、CString与char *

  • 多字节环境:CString等价于const char *,因此,在const char *的参数下可以直接使用CString,但是不能用于char *。

例:

void show(const char * name)
{
AfxMessageBox(name);
}
......... CString name("luotian");
show(name); //可以通过

CString可以智能化
在多字节环境下无论怎么赋值都是ASCII编码,比如:CString a(L"luotian"),加上L修饰,CString依然将它进行ASCII编码。
在Unicode环境下,无论怎么赋值都是Unicode编码,比如:CString a("luotian"),不加L修饰依然可以通过。

  • CString与LPCTSTR

在函数参数需要LPTSTR,LPCTSTR等等时,CString变量可以直接使用.

//例如:在Unicode环境下:
CString a("Luotian");
MessageBox(a);
  • CString->LPTSTR

//强制类型转换
CString a("Luotian");
LPTSTR p = (LPTSTR)(LPCTSTR)a; //用CString的GetBuffer()方法
LPTSTR p = a.GetBuffer();
  • LPTSTR->CString

可以直接赋值操作.

三、char * 与 wchar_t *的互换(重点

  • ASCII->Unicode

LPSTR source ="Luotian";//源串
size_t len = strlen(source) + ;
size_t converted = ;
LPTSTR dest= (LPTSTR)malloc(len*sizeof(WCHAR)); mbstowcs_s(&converted,dest,len,source,_TRUNCATE);  
  • Unicode->ASCII
#define WChar2Char(lpWideCharStr,cbWideChar,lpMultiByteStr,cbMultiByte) \
WideCharToMultiByte(CP_ACP, , lpWideCharStr, cbWideChar, lpMultiByteStr, cbMultiByte, NULL, NULL)
例:
WChar2Char(source,-,dest,cb字节数);
TCHAR dest[];
LPCWSTR source=L"Luotian";
WChar2Char(source, -, dest, );

四、string和wstring

  • string->const char *(LPCSTR)和wstring->const wchar_t * (等价于LPCTSTR)

//采用.c_str()方法;
string a("Luotian");
const char * p = a.c_str();
  • char * p->string

char * p = "luotian";
string a=p;
//string和CString的一个区别在于:函数参数需要LPTSTR时,CString可以直接用,而string不行。

wchar_t,char,string,wstring等的总结的更多相关文章

  1. wchar_t char string wstring 之间的转换

    wchar_t char string wstring 之间的转换 转:http://blog.csdn.net/lbd2008/article/details/8333583 在处理中文时有时需要进 ...

  2. 深入理解c++中char*与wchar_t*与string以及wstring之间的相互转换 [转]

    本篇文章是对c++中的char*与wchar_t*与string以及wstring之间的相互转换进行了详细的分析介绍,需要的朋友参考下. #ifndef USE_H_ #define USE_H_ # ...

  3. 深入理解c++中char*与wchar_t*与string以及wstring之间的相互转换

    本篇文章是对c++中的char*与wchar_t*与string以及wstring之间的相互转换进行了详细的分析介绍,需要的朋友参考下-复制代码 代码如下:    #ifndef USE_H_     ...

  4. wchar_t与char、wstring与string的相互转换

    个人倾向于使用优秀的开源库做这个. 最近使用boost进行转换,代码极其简单: boost::filesystem::path src(wchar_t); char = src.string().c_ ...

  5. CString 转 char*; wstring 转 string

    1. CString  转 char* ); CString name; name.Format(_T("bookUC%d.txt"),m_ID); std::wstring _n ...

  6. C++的中英文字符串表示(string,wstring)

    在C++中字符串类的string的模板原型是basic_string template <class _Elem, class traits = char_traits<_Elem> ...

  7. C++的中英文字符串表示(string,wstring),使用wcout.imbue(std::locale("chs"));本地化解析编码

    在C++中字符串类的string的模板原型是basic_string template <class _Elem, class traits = char_traits<_Elem> ...

  8. C++字符类型总结区别wchar_t,char,WCHAR

    转至:http://www.360doc.com/content/12/0807/01/9290626_228750141.shtml 1.区别wchar_t,char,WCHAR ANSI:即 ch ...

  9. c++ 字符类型总结区别wchar_t,char,WCHAR(转)

    1.区别wchar_t,char,WCHAR ANSI:即 char,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数.   UNICODE:wch ...

随机推荐

  1. node.js中事件触发器events的使用

    node.js是基于事件驱动的,通过events,我们可以方便的创建事件,并通过触发事件来调用我们自定义的监听函数. 所有能触发事件的对象都应该是 EventEmitter 类的实例,一般我们自定义一 ...

  2. jqPaginator分页(每次只取一页数据)

    应用技术点:jqPaginator.template7.bootstrap.css 参考网址: jqPaginator:http://jqpaginator.keenwon.com/#a3 templ ...

  3. TortoiseSVN设置Beyond Compare为版本比较、差异合并工具

    打开乌龟的setting==>Diff Viewer 比较"D:\develop\Beyond Compare 4\BCompare.exe" %base %mine /ti ...

  4. jsp获取ip使用request.getRemoteAddr返回0:0:0:0:0:0:0:1

    JAVA Web开发过程中,很多场景下需要获取访问终端的IP,对应方法getRemoteAddr.例如调试过程中本地回环ip地址是127.0.0.1,忽然有一天返回 0:0:0:0:0:0:0:1,这 ...

  5. vue 获取组件 和 dom 对象 ref/el

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. js数据类型和变量

    Number JavaScript不区分整数和浮点数,统一用Number表示: 123 0.345 -99 NaN 当无法计算结果时用NaN表示 Infinity 表示无限大,当数值超过js的Numb ...

  7. 网页 PHP 动态师范

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. 比较两个List列表,取得List中不同项返回

    /// <summary> /// 比对模型及属性数组 /// </summary> /// <typeparam name="TM">< ...

  9. cron Linux下的定时执行工具

    说明:测试平台  Ubuntu 16.04.4 LTS cron是一个Linux下的定时执行工具,可以在无需人工干预的情况下运行作业.所以,在Linux中,周期性执行的任务一般由cron这个守护进程来 ...

  10. Python之路(第五篇) Python基本数据类型集合、格式化、函数

    一.变量总结 1.1 变量定义 记录某种状态或者数值,并用某个名称代表这个数值或状态. 1.2 变量在内存中的表现形式 Python 中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是 ...