C++中字符串和char []类型的区别
在本节中,我们将看到C++中string和char[]之间的区别是什么。char[]基本上是一个字符数组。因此,此数组具有一些属性。这些属性在下面列出。
如果在堆栈部分中分配了char[],则它将始终占据256个字节的空间。它不会取决于文本的大小。
如果我们使用malloc()
或calloc()
动态地为它分配空间到堆部分中,那么我们有责任在使用完之后释放内存,并且我们总是有堆分配的开销。
如果字符数组的大小大于256个字符,则程序可能会崩溃。它可能在我们的代码中生成难看的断言消息。
为了获得字符串的长度,我们必须扫描整个字符数组,直到每次到达'\0'字符为止。
另一方面,C++将字符串放入其标准命名空间。该字符串是一个类,并且其中包含字符数组。它自动为用户管理。在大多数情况下,字符串的内置数组为16个字符。因此,对于较短的字符串,它不会对字符串进行分段,而对于较大的字符串,它将使用堆部分。
C++字符串具有内置的'\0'字符。它存储字符串的长度而无需计算。至于较短的文本不占用堆,则可以防止缓冲区溢出。而且这些字符串在C++中易于使用。