【发布时间】:2018-10-01 10:30:25
【问题描述】:
在一个文件中管理字符串而不是多次写出字符串的最佳做法是什么?我的想法是创建一个简单的 string_library.h 文件,其中包含映射中的所有字符串,并方便地定义以获取名称和 ID。像这样的:
#include <string>
#include <map>
#define SENSOR1_ID 0
#define SENSOR2_ID 1
#define SENSOR1_NAME string_library[SENSOR1_ID]
#define SENSOR2_NAME string_library[SENSOR2_ID]
std::map<unsigned int, const std::string> string_library{
std::make_pair(SENSOR1_ID, "Sensor1 Name"),
std::make_pair(SENSOR2_ID, "Sensor2 HI Name")
};
这样,字符串只需写出一次,并且可以通过定义或从地图中轻松获取。该地图可能对能够在地图上进行迭代很有用,但也许其他一些构造更有意义。
【问题讨论】:
-
您希望通过这样的解决方案解决的真正问题是什么?储存空间?帮助翻译?还有什么?
-
GNU gettext 能满足您的需求吗?
-
我不会使用宏,而是将您的 ID/名称定义为已知命名空间内的常量静态 std::strings
-
@Someprogrammerdude 在重构应该在所有文件中保持一致的字符串时,有些人往往会被遗忘。在多个地方使用的字符串的折射应该只执行一次以排除疏忽。
-
@Madden,你能解释一下为什么它们应该是静态的吗?