C ++:我应该使用字符串或字符数组吗?

时间:2010-04-16 05:28:11

标签: c++ c string char

我对程序员在C和C ++中编码方式的基本方式有点模糊。特别一件事是在C ++中使用字符串而不是字符数组,反之亦然。那么,我应该使用字符串或字符数组,一般来说,为什么?

6 个答案:

答案 0 :(得分:27)

在C ++中,几乎在所有情况下都应使用std::string而不是原始char数组。

std::string为你管理底层内存,这本身就是一个很好的理由来选择它。

它还为常见的字符串操作提供了一个很多更易于使用和更易读的界面,例如:等式测试,连接,子串操作,搜索和迭代。

答案 1 :(得分:12)

如果您要修改或返回字符串,请使用std::string。如果没有,请将您的参数作为const char*接受,除非您绝对需要std::string成员函数。这使您的函数不仅可用于std::string::c_str(),还可用于字符串文字。为什么让你的调用者付出代价来构建一个带有堆存储的std::string只是为了传入一个文字?

答案 2 :(得分:1)

使用std::string。 使用缓冲区大小会有更少的问题(我想几乎没有,至少没有我想到的)。

答案 3 :(得分:1)

C有char []而c ++也有std :: string ......

我经常听到人们应该“拥抱语言”,遵循该规则,你应该使用std :: string ......

然而,它几乎取决于您使用的库,该库如何让您表达您的字符串,这样的东西。

std :: string是一个容器类,在它里面是char []
如果你使用std :: string,你有很多优点,比如可以帮助你的函数[compare,substr,as examples]

答案 4 :(得分:1)

其他人已经说过了。尽可能使用std :: string。但是,有些区域需要char *,例如,如果您想调用某些系统服务。

答案 5 :(得分:0)

就像你选择的一切一样取决于你正在做什么。如果您正在处理更改的字符串数据,则std :: string具有实际值。在处理不变的字符串时,你无法击败char []以提高效率。