可能重复:
C++ char* vs std::string
使用char *而不是std :: string是否有任何优势?
我知道char *通常是在堆栈上定义的,所以我们确切地知道我们将使用多少内存,这实际上是一个很好的参数供他们使用吗?或者std :: string在各方面都更好吗?
答案 0 :(得分:4)
如果您使用C ++编写,那么在大多数情况下,std :: string会更好。相反,在一些情况下你可能想要使用char *:
- 与旧C代码的兼容性(尽管std :: string的c_str()方法处理大部分内容)
- 为了节省内存(std :: string可能会有更多的开销)
- 您希望确定知道内存所在的位置,例如网络代码或共享内存
答案 1 :(得分:2)
当专门处理C ++时,std :: string几乎在所有方面都更好。我仍然使用C字符串的唯一情况是
显然每条规则都有例外。如果您正在进行大量的文本解析,那么使用原始指针到缓冲区可能会更有效,例如,但对于一般的字符串,首选std :: string。