ファイルの内容をハードコードされた文字列定数として使用する簡単な方法を探しています。
もちろん、ファイルの内容を にコピー/貼り付けすることもできますが、それにはs を各行の最後とそれぞれの前に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
追加のビルド前の手順を実行せずに実行したいと考えています。
編集: ファイルを実行可能ファイルに埋め込む方法は? バイナリファイルの埋め込みに焦点を当てています。テキスト ファイルのコンテンツをハード コードされた文字列として使用したいだけです。メソッドは、私がやりたいことに対して重すぎることを示唆しています。