std :: string vs char数组用于静态const

时间:2015-06-11 22:22:31

标签: c++ arrays static

我想在cpp文件中的多个位置使用字符串常量。我应该使用std :: string还是char []?

static const std::string kConstantString = "ConstantStringValue";

static const char kConstantString[] = "ConstantStringValue";

我被告知更喜欢后者,因为它“避免了静态分配”。 char数组是否也必须静态分配?

3 个答案:

答案 0 :(得分:7)

是的,是的,它也必须静态分配。

始终使用std::string,除非您的探查者告诉您,值得const char[]这样的传统废话值得惹恼。选择const char[]是一个恼人的微优化优于std::string和一个愚蠢的决定,除非你确定这段代码是一个热门的道路(因为它是静态的,我非常怀疑它)

答案 1 :(得分:4)

只需定义一个指向此字符串文字的指针。:)它可以有静态存储说明符。

没有必要使用class std :: string。它简直是多余的,毫无用处。如果确实需要,该常量总是可以转换为std :: string。

答案 2 :(得分:0)

由于它是static const,因此无论如何都无法对此字符串进行任何操作,因此最好只使用const char[]