CStrng,string,char[],char* char关系

1.CString 是“字符串类”,CString是基于TCHAR数据类型的对象。如果在你的程序中定义了符号_UNICODE,则TCHAR被定义为类型wchar_t,即16位字符类型;否则,TCHAR被定义为char,即8位字符类型。在UNICODE方式下,CString对象由16位字符组成。非UNICODE方式下,CString对象由8位字符组成。
你可以使用CString对象任意替换const char*和LPCTSTR函数参数。

提示:如果可能的话,应在框架中而不是堆中分配这个CString对象。这可以节省内存并简化参数的传递。
CString允许两个具有相同值的字符串共享相同的缓冲空间,这有助于你节省内存空间。但是,如果你初始直接改变该缓冲的内容(不使用MFC),则有可能在无意中改变了两个字符串。CString提供了两个成员函数CString::LockBuffer和CString::UnlockBuffer来帮助你保护你的数据。当你调用LockBuffer时,你就创建了一个字符串的一个拷贝,然后将引用计数设置为-1,这就“加锁”了该缓冲区。当缓冲区被加锁时,就没有其它的字符串可以引用该字符串中的数据,被加锁的字符串也不能引用其它字符串的数据。通过加锁该缓冲区内的字符串,就可以保证该字符串对数据的持续独占。当你使用完数据后,调用UnlockBuffer来将引用计数恢复为1。
2.  string是“字符串”。类似于char * ,结尾一“\0”结束;实质上是:typedef basic_string<char> string;

3. char[Totial]是“字符数组”,共有Totial个字符,不会自动补充“\0”。分配内存空间。

4. char* 字符指针。只分配4字节字符空间。用了存储“。。。。。”字符串的首地址。可以指向,代码区、数据区、堆、栈区。

5. char,字符类型。char a = 'a';没有“\0”。分配一个字节的空间。

 

你可能感兴趣的:(CStrng,string,char[],char* char关系)