VC中的字符串(总结一下,大家看看对不对)

本文详细解析了VC中各种字符串类型的定义及其应用场景,包括CHAR、LPSTR、LPCSTR、WCHAR、LPWSTR、LPCWSTR、TCHAR、LPTSTR、LPCTSTR等,并介绍了字符串操作函数及封装类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初学VC的时候经常被VC里头的各种字符串定义搞糊涂了,没办法的时候就直接使用CString了反正,这个类总能处理的。后来随着用得多了,渐渐得明白过来,那些字符串设置还是蛮有道理的。  
   
  先来看看最简单的:  
  CHAR  
  这个类型是最简单的字符串了,就是一个字节表示一个字符的那种,不过你可别小看它,先弄懂它别的就好说了。接下来我们看看它的两个“变种”  
   
  LPSTR  
  在VC里头这个字符串实际上就是CHAR*,注意如果你把它作为参数传给某个函数的话,就表示它所代表的字符串可以被函数改变。这一点很重要,也就是说LPSTR可以作为传出参数[in]使用。  
   
  LPCSTR  
  在VC里头这个字符串表示const   CHAR*,也就是说它是个常量,如果作为参数传递个函数,它所表示的字符串的值是不能变的,也就是说它只能作为传入[out]参数使用。  
   
  请认真比较上面的一些区别,在下面的字符串中,几乎都是这样划分的。  
   
  WCHAR  
  这个比较容易理解,就是使用两个字节表示一个字符的那种,如果咱们把项目定义为UNICODE的话,所有字符串都是这个了。同样的它也有两个变形LPWSTR和LPCWSTR。  
   
  TCHAR  
  这个字符串最经常使用。为什么呢?因为VC为了大家的方便,比如你想把项目从ANSI(单字节)改为UNICODE(双字节),如果你用的是TCHAR那么就不用着急了。VC会自动为你转换。  
  说到底TCHAR就是你在没有定义项目是UNICODE之前它就是了CHAR,否则它就是WCHAR。就这么简单。  
  现在就能理解LPTSTR和LPCTSTR是什么意思了吧。  
   
  这里权作抛砖引玉,要是有任何不对的地方,欢迎大家批评指正哦。  
  下次有空,咱们来谈谈这几种字符串这间的转换为题。对了还有一种类型是BSTR,在COM中经常使用,咱们也在下次讨论吧。   
    
    
    
******************************************************************************

******************************************************************************

******************************************************************************

c语言字符类型:  
  char                       操作函数:   strxxx    
  wchar_t                 操作函数:     wcsxxx  
  TCHAR                     操作函数:     _tcsxxx  
   
  windows字符类型:  
  CHAR               CHAR*           LPSTR       LPCSTR  
  WCHAR             WCHAR*         LPWSTR     LPCWSTR  
  TCHAR             TCHAR*         LPTSTR     LPCTSTR  
  OLECHAR         OLECHAR*     BSTR  
   
  char             CHAR       单字节字符  
  wchar_t       WCHAR     Unicode字符  
  TCHAR           当定义了UNICODE标志时表示WCHAR,   否则为CHAR  
  OLECHAR       com中使用的字符类型,   实现为WCHAR   
  ******************************************************************************

******************************************************************************

******************************************************************************

 

总结以下处理字符串可用的资源:  
   
  最常用的字符串操作宏  
  _T       _TEXT       TEXT  
  TCHAR   str[]   =   TEXT("hello   world");  
   
  UNICODE字符串的表示法:  
  WCAHR   str[]   =   L"hello   world";  
   
  atl转换宏:  
  A2W  
  OLE2A   ...  
   
  c字符串操作函数  
  strxxx       wcsxxx     _tcsxxx  
   
  windows字符串操作函数  
  StrCpy     ...       (shell   string   function)  
  lstrcpy   ...       (window标准字符串函数)  
  SysAllocString     SysFreeString     ...   (处理BSTR的特殊字符串函数)  
   
  字符串封装类  
  bstr_t     CComBSTR       (两个BSTR包装类)  
  CString                         (MFC字符串类,这个不用说了)  
  string                           (实际是basic_string<char>,   stl字符串类)  
  wstring                         (实际是basic_string<wchar_t>,   stl宽字符串类)

 

 

  ******************************************************************************

******************************************************************************

******************************************************************************

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值