C ++:char test [100] vs array <char,100 =“”> vs string

时间:2015-10-13 13:13:33

标签: c++

如果我有一个我知道长度恒定的字符串,我应该使用什么?

char test[100]
std::array<char, 100> test
std::string test

谢谢!

4 个答案:

答案 0 :(得分:8)

答案在于问题:

  

如果我有字符串 ...

如果您有字符串,请使用std::string。除非你有非常具体的要求,否则你没有提到。

答案 1 :(得分:2)

在C ++中,字符串应声明为string实例。但是如果你需要它是常量,那么将它声明为const string并正确初始化它。

char test[100]不是字符串,而是100个字符的C数组(如果需要,可用于构建C ++字符串)。

std::array<char,100> test只是一个包含100个字符的C ++数组,与字符串无关。

答案 2 :(得分:1)

无论您是否知道它的长度是否恒定,我们总是建议您使用std::string。将字符串包含在实际的字符串对象中使您可以查询字符串以获取元信息(例如,长度),并更好地与C ++功能集成以处理字符串。如果确保字符串/不能/超过100个字符对您来说非常重要,您可能会发现

std::array<char, 100>

是有价值的,但我不能想到你更喜欢这种功能而不仅仅是使用字符串。

答案 3 :(得分:0)

除非你有其他原因,否则你应该选择std::string。这不仅说数据是一个字符串,而且你也得到了所有很好的字符串函数。

如果您决定更改代码并允许变量/更大尺寸的字符串,那么您还可以获得以下好处:需要更改任何内容,$routeProvider.when('/person/:name/:label', { templateUrl: function(params) { return params.name == 'John' ? 'john.html' : 'generic.html'; }, controller: 'PersonCtrl' }); 将缩放