char和CString的区别和关系是什么?
What is the difference and the relationship of char and CString
谁能给我解释一下char *和CString之间的区别和关系?谢谢。
有几个重要的区别。
char *
是指向char
的指针。一般来说,你不能说它是一个字符,还是一个字符串的开始,以及它的长度是多少。所有这些都是由程序逻辑和一些约定决定的,即标准C函数,喜欢使用const char *
作为输入。您需要手动管理为字符串分配的内存。
CString
是一个宏。根据您的程序编译选项,它可以定义为CStringA
或CStringW
类。有异同。
不同之处在于CStringA
使用非Unicode数据(类似于char*
),而CStringW
是一个Unicode字符串(类似于wchar_t*
)。
std::string
和std::wstring
类。
除此之外,CStringA
和CStringW
都提供了将字符串转换为Unicode格式的功能。
CString将是char
的数组,char*
将是指向char
数组的指针,可以迭代字符串中的字符。
实际上来自MSDN:
CString
基于TCHAR
数据类型。如果为程序定义了符号_UNICODE
,则TCHAR
定义为类型wchar_t
,一个16位字符类型;否则,它被定义为char,即普通的8位字符类型。在Unicode下,CString
对象由16位字符组成。如果没有Unicode,它们由8位char类型组成。
CString是一个包含不同功能的类。MSDN
char *只是一个普通的c++数据类型。
CString主要用于MFC应用程序。
CString是TCHAR-s序列而不是char*序列。主要区别在于,如果定义了UNICODE, CString将是wchar的序列。实际上,根据宏CString将被定义为CStringA或CStringW。另一个主要区别是CString是一个类,而char*只是一个指向字符的指针。
根据char的类型,CString可以是CStringA或CStringW。
也就是说,CString
是字符数组的包装器,它使您能够轻松地将该字符数组视为字符串,并以与字符串类型相关的方式对其进行操作。
对于它们之间的关系,这里有一些很容易说明的东西。你可以像这样在char *和CString之间转换:
CString str = "abc"; // const char[3] or char * to CString
和
const char * p = str.Get()
//CString to const char *
CString
是一个类,它提供了许多char *
没有的功能。char *
只是一个指向char或char数组的指针。
CString包含一个与char *: LPTSTR GetBuffer( int nMinBufLength );
LPTSTR
和char *
的区别在这里和这里
CString是一个围绕char*的包装类,以提供一些有用的附加功能,并对用户隐藏内存分配/释放。在性能方面没有太大的区别,所以如果你使用MFC类,你不妨使用CString。
- #include < conio.h> 和 getch() 方法之间的关系是什么?
- 超市管理系统的类别之间应该是什么关系?
- 回调和函数指针是什么关系
- 数组与其地址之间的关系是什么?
- C标准和C++标准之间的关系是什么?
- C++HOLDS_A关系是什么?
- 操作之间的关系中的对象类型是什么?
- 什么是 ABI,为什么C++没有标准,如果有的话又有什么关系?
- 为什么有人告诉我数组是指针?C++中数组和指针之间的关系是什么
- STL和stdlib之间的关系是什么
- 多个头文件和类之间的关系是什么
- 什么是寄存器缓存,它与const变量有什么关系
- .ycm_extra_conf.py和Exuberant tags之间的关系是什么?
- 内联关键字的两种不同效果之间的关系是什么?
- char和CString的区别和关系是什么?
- 双指针和二维数组之间的关系是什么?
- iostream和命名空间std之间的关系是什么?
- 他们的论点之间的关系是什么?
- 堆栈和子类之间的正确UML关系是什么
- C和C++之间的关系是什么(更技术的方法)