Char * vs std :: string

时间:2010-04-27 05:26:34

标签: c++ char stdstring

  

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

使用char *而不是std :: string是否有任何优势?

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

2 个答案:

答案 0 :(得分:4)

如果您使用C ++编写,那么在大多数情况下,std :: string会更好。相反,在一些情况下你可能想要使用char *:

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

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

- 您希望确定知道内存所在的位置,例如网络代码或共享内存

答案 1 :(得分:2)

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

  1. 与操作系统交谈,但通常情况下,如果您将字符串传递给操作系统,则std :: string :: c_str将其覆盖
  2. 常量 - 对于常量字符串,std :: string有点重,因为它会在应用启动时进行堆分配
  3. 显然每条规则都有例外。如果您正在进行大量的文本解析,那么使用原始指针到缓冲区可能会更有效,例如,但对于一般的字符串,首选std :: string。