Я ищу простой способ использовать содержимое файла как жестко заданную строковую константу.
Конечно, я мог бы просто скопировать/вставить содержимое файла в define
, но это потребовало бы от меня поставить \
в конце каждой строки и перед каждым "
.
Я пытался использовать constexpr
, чтобы прекомпилятор загрузил файл, но либо я сделал что-то не так (я не знаком с constexpr
), либо это невозможно.
Вот что я пробовал:
constexpr const char* loadFile()
{
std::string retVar;
std::ifstream file("filename.txt");
retVar = std::string((std::istreambuf_iterator<char>(file)),
std::istreambuf_iterator<char>());
return retVar.c_str();
}
#define FILE_CONTENT = loadFile();
Я получаю сообщение об ошибке:
error: body of constexpr function 'constexpr const char* loadFile()' not a return-statement
Может быть, кто-то может изменить мой код, чтобы он работал должным образом, или, может быть, у кого-то есть совершенно новый способ достижения моей цели.
Я знаю, что мог бы просто написать скрипт, который считывает содержимое файла и преобразует его в #define
, но я хотел бы сделать это без дополнительных шагов перед сборкой.
Изменить: Как встроить файл в исполняемый? фокусируется на встраивании двоичных файлов. Я просто хочу использовать содержимое текстового файла как жестко закодированную строку. Предлагаемые методы слишком тяжелы для того, что я хочу сделать.