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

使用char*而不是std ::字符串有任何优势吗?

我知道Char*通常在堆栈上定义,因此我们确切知道我们将使用多少内存,这实际上是对它们使用的好论点吗?还是std :: string在各个方面都更好?

有帮助吗?

解决方案

如果您在C ++中写作,那么在大多数情况下,您会遇到的STD :: String会更好。相反,有几种情况,您可能想使用char*'s:

- 与旧的C代码的稳定性(尽管STD :: String's C_str()方法处理大多数)

- 保存内存(STD :: String可能会有更多的开销)

- 示例您要确保知道内存所在的位置,例如网络代码或共享内存

其他提示

专门处理C ++ STD :: String几乎在各个方面都更好。我仍然使用C字符串的唯一情况是

  1. 与操作系统交谈,但通常,如果您将字符串传递到OS,则STD :: String :: C_str覆盖了它
  2. 常数-STD :: String对于恒定字符串有点重,因为它将在应用程序启动时进行堆分配

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top