c++ - 为什么要在 C++ 中使用 std::string 而不是 c 风格的字符串?

标签 c++ string c-strings

“人们应该始终使用 std::string 而不是 c 风格的字符串 (char *)”是此处发布的几乎所有源代码的建议。虽然该建议无疑是好的,但要解决的实际问题不允许详细说明该建议的为什么?方面。这个问题是作为相同的占位符。

一个好的答案应该包括以下几个方面(详细):

  1. 为什么要在 C++ 中使用 std::string 而不是 c 风格的字符串?
  2. #1 中提到的做法有哪些缺点(如果有的话)?
  3. 在哪些情况下,与 #1 中提到的建议相反是一种好的做法?

最佳答案

  1. std::string 管理自己的内存,因此您可以轻松地复制、创建、销毁它们。
  2. 您不能将自己的缓冲区用作 std::string。
  3. 您需要将 c 字符串/缓冲区传递给期望获得缓冲区所有权的对象 - 例如第 3 方 C 库。

关于c++ - 为什么要在 C++ 中使用 std::string 而不是 c 风格的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10022117/

相关文章:

c++ - 无法将 const 应用于 typedef 引用

c++ - 发现两个字符串是循环的

c++ - 所需代码的说明

c++ - 使用 STL 的图形(列表 vector ,即邻接列表)- C++

java - StringPool中的字符串对象生命周期

计算给定字符串的 float 的长度

java - 如何使用正则表达式操作给定的字符串以获得两个不同的字符串?

c - 根据长度崩溃对静态数组中的字符串进行排序? |错误分配/访问|

c - 尝试反转字符串会导致空字符串

c - 根据字符位置将字符串分成两部分