VC里面到底有多少字符串的类型
CString?char?TCHAR???........
常用的有哪些呢?各有什么区别阿?有这方面资料吗?谢谢!

解决方案 »

  1.   

    我主要用CString和char*
    用哪个都可以,它们之间可以互相转化的,根据你调用函数的参数采取相应类型
      

  2.   

    一 
    BSTR(Basic STRing,Basic字符串)是一个OLECHAR*类型的Unicode字符串。它被描述成一个与自动化相兼容的类型。由于操作系统提供相应的API函数(如SysAllocString)来管理它以及一些默认的调度代码,因此BSTR实际上就是一个COM字符串,但它却在自动化技术以外的多种场合下得到广泛使用。图1描述了BSTR的结构,其中DWORD值是字符串中实际所占用的字节数,且它的值是字符串中Unicode字符的两倍。  LPSTR和LPWSTR是Win32和VC++所使用的一种字符串数据类型。LPSTR被定义成是一个指向以NULL(‘\0’)结尾的8位ANSI字符数组指针,而LPWSTR是一个指向以NULL结尾的16位双字节字符数组指针。在VC++中,还有类似的字符串类型,如LPTSTR、LPCTSTR等,它们的含义如图2所示。  例如,LPCTSTR是指“long pointer to a constant generic string”,表示“一个指向一般字符串常量的长指针类型”,与C/C++的const char*相映射,而LPTSTR映射为 char*。  一般地,还有下列类型定义:#ifdef UNICODE 
     typedef LPWSTR LPTSTR;
     typedef LPCWSTR LPCTSTR; 
    #else 
     typedef LPSTR LPTSTR; 
     typedef LPCSTR LPCTSTR; 
    #endif    二、CString、CStringA 和 CStringW  中将CStringT作为ATL和MFC的共享的“一般”字符串类,它有CString、CStringA和CStringW三种形式,分别操作不同字符类型的字符串。这些字符类型是TCHAR、char和wchar_t。TCHAR在Unicode平台中等同于WCHAR(16位Unicode字符),在ANSI中等价于char。wchar_t通常定义为unsigned short。由于CString在MFC应用程序中经常用到,这里不再重复。
      

  3.   

    CString temp;
    char *ss=temp.GetBufferSetLength(temp.GetLength());
    可以完成从CString到char*的转化
      

  4.   

    字符串
    c++:
    CString str = "123";
    c:
    char * p   = "123";
    char t[4]= = "123";字符:
    char ch = 'a';
    宽字符 tch = '中';
      

  5.   

    可以参考这些:
    http://www.codeproject.com/string/cppstringguide1.asp
    http://www.codeproject.com/string/cppstringguide2.asp
      

  6.   

    http://community.csdn.net/Expert/topic/3320/3320756.xml?temp=.8620874看一下斑竹总结的,不错啊^_^
      

  7.   

    COM String
    http://www.devguy.com/fp/Tips/COM/bstr.htm