我想在cpp文件中的多个位置使用字符串常量。我应该使用std :: string还是char []?
static const std::string kConstantString = "ConstantStringValue";
static const char kConstantString[] = "ConstantStringValue";
我被告知更喜欢后者,因为它“避免了静态分配”。 char数组是否也必须静态分配?
答案 0 :(得分:7)
是的,是的,它也必须静态分配。
始终使用std::string
,除非您的探查者告诉您,值得const char[]
这样的传统废话值得惹恼。选择const char[]
是一个恼人的微优化优于std::string
和一个愚蠢的决定,除非你确定这段代码是一个热门的道路(因为它是静态的,我非常怀疑它)
答案 1 :(得分:4)
只需定义一个指向此字符串文字的指针。:)它可以有静态存储说明符。
没有必要使用class std :: string。它简直是多余的,毫无用处。如果确实需要,该常量总是可以转换为std :: string。
答案 2 :(得分:0)
由于它是static const
,因此无论如何都无法对此字符串进行任何操作,因此最好只使用const char[]
。