2

可能重复:
C++ char* vs std::string

使用 char* 代替 std::string 有什么好处吗?

我知道 char* 通常是在堆栈上定义的,所以我们确切地知道我们将使用多少内存,这实际上是他们使用的一个很好的论据吗?还是 std::string 在各方面都更好?

4

2 回答 2

4

如果您使用 C++ 编写,那么在您遇到的大多数情况下,std::string 会更好。相反,您可能希望使用 char* 的一些情况: -

与旧 C 代码的兼容性(尽管 std::string 的 c_str() 方法处理了大部分)

- 为了节省内存(std::string 可能会有更多开销)

-您想确保知道内存在哪里的情况,例如网络代码或共享内存

于 2010-04-27T05:32:12.570 回答
2

当专门处理 C++ 时,std::string 几乎在所有方面都更好。我仍然使用 C 字符串的唯一情况是

  1. 与操作系统交谈,但通常,如果您将字符串传递给操作系统,那么 std::string::c_str 会覆盖它
  2. 常量 - std::string 对于常量字符串来说有点重,因为它会在应用程序启动时进行堆分配

显然,每条规则都有例外。例如,如果您要进行大量文本解析,那么使用原始指针到缓冲区可能会更有效,但对于一般字符串摆弄 std::string 是首选。

于 2010-04-27T05:35:34.760 回答