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

the*_*aju 4 c++ arrays static

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

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

static const char kConstantString[] = "ConstantStringValue";
Run Code Online (Sandbox Code Playgroud)

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

Pup*_*ppy 7

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

总是使用,std::string除非你的探查器告诉你值得用传统的垃圾捣乱const char[].选择const char[]是一个烦人的微优化std::string和一个愚蠢的决定,除非你确定这段代码是一个热门的道路(因为它是静态的,无论如何我都高度怀疑它).

  • Downvoted.由于静态初始化顺序失败,使用`static const std :: string`是一个灾难的处方,有人可能无意中在其他静态常量中使用它.我实际看到它发生了好几次...... (5认同)