【发布时间】:2015-01-04 15:07:40
【问题描述】:
我要重构:
const char* arr =
"The "
"quick "
"brown";
变成类似:
const char* quick = "quick ";
const char* arr =
"The "
quick
"brown";
因为在很多其他地方都使用了字符串“quick”。理想情况下,我只需要 const 原始类型就可以做到这一点,所以没有字符串。最好的方法是什么?
【问题讨论】:
-
这种情况很少见,但预处理器宏似乎更合适。
-
您不能重复使用子字符串。每个文字字符串在内存中必须是连续的。如果你想优化内存使用,那么你必须通过代码来完成(即在运行时)。
-
或使用 std::string 并将它们连接起来。我不知道这是否对您有性能影响。
-
没有性能问题,但这是一个匿名命名空间内的全局变量,由于不确定的初始化顺序,公司的政策是在类/函数之外只有原始类型。我喜欢尽可能避免使用宏(例如这里)。
标签: c++ initialization concatenation const-char