C++ 中 string 和 char[] 类型之间的区别

c++server side programmingprogramming

在本节中,我们将了解 C++ 中 string 和 char[] 之间的区别。char[] 基本上是一个字符数组。因此,这个数组有一些属性。这些属性列在下面。

  • 如果 char[] 分配在堆栈部分,则它将始终占用 256 字节的空间。它不取决于文本的大小。

  • 如果我们使用 malloc() 或 calloc() 动态地将空间分配到堆部分,那么我们有责任在使用后释放内存,并且我们总是有堆分配的开销。

  • 如果字符数组的大小大于 256 个字符,则程序可能会崩溃。它可能会在我们的代码中生成丑陋的断言消息。

  • 为了获取字符串的长度,我们每次都必须扫描整个字符数组,直到到达‘\0’字符。

另一方面,C++ 将字符串放入其标准命名空间中。此字符串是一个类,其中包含字符数组。它会自动为用户管理。在大多数情况下,字符串的内置数组为 16 个字符。因此,对于较短的字符串,它不会对字符串进行分段,但对于较大的字符串,它使用堆部分。

C++ 字符串具有内置的‘\0’字符。它存储字符串的长度而不进行计数。至于较短的文本,它不占用堆,因此可以防止缓冲区溢出。此外,字符串在 C++ 中易于使用。


相关文章