对于CString这个类,我始终有许多疑惑。
1。它对字符串的定义,在该类中是用一个指针成员变量来保存还是用一个数组来
保存呢?
2。如果用Unicode预定义之后,CString str="abcdefg",其中a,b,c等是不是都是用两个字节来存储?如果把这个str再转换成char字串,是不是会变成“a\0b\0c\0d\0"?
3.Unicode,ole2T(好像是这个)还有其他的一些编码好像都是用两个字节来表示字符,到底有什么区别呢?

解决方案 »

  1.   

    第一个问题我可以回答。在CString定义中是这样的
    protected:
    LPTSTR m_pchData;   // pointer to ref counted string data
    可见,是用的指针成员变量。
      

  2.   

    用Unicode预定义之后char字串也是unicode形式的,所以不会出现你说的那种现像
      

  3.   

    我觉得CString 就是一个超大缓冲区,和一些维护这个缓冲区的函数的集合
      

  4.   

    谢谢各位,但是我还是有些不解,
    slimsymphony(待到山花烂漫时,我自横刀向天啸)说char中保存的也是UNICOAD,那么一个字节表示字符的字串就不存在了吗?还有char a,这个a是一个字节还是两个字节呢?实践证明是一个字节阿。CString映射的有些输入控件会不会产生缓冲区溢出的问题呢
      

  5.   

    UNICODE下的字符类型是wchar_t,而不是char,char总是1字节,wchar_t总是2字节。