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


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

  • 如果 char[] 在栈段中分配,则它将始终占用 256 字节的空间。它不依赖于文本的大小。

  • 如果我们使用 malloc() 或 calloc() 将其动态分配到堆段,那么我们有责任在使用后释放内存,并且我们始终存在堆分配的开销。

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

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

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

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

更新于: 2019-07-30

746 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告