Лучшая практика для управления строковыми литералами

Как лучше всего управлять строками в одном файле, а не записывать их несколько раз? Моя идея состоит в том, чтобы создать простой файл string_library.h, содержащий все строки на карте и удобные определения для получения имен и идентификаторов. Что-то вроде этого:

#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")
};

Таким образом, строки должны быть записаны только один раз и могут быть легко получены с помощью определений или с карты. Карта может быть полезна для возможности итерации по карте, но, возможно, какая-то другая конструкция имеет больше смысла.

1 ответ

Вы можете просто использовать constexpr переменная:

constexpr auto SENSOR1_NAME = "Sensor1 Name";

Не нужно ни макросов, ни дорогих накладных расходов на динамическую память.

Другие вопросы по тегам