C ++ 17是否提供任何在编译时加载/读取文件的方式?更具体地说,我想将文件的内容加载到const char*
或std::string_view
等中。例如:
constexpr const char* read_file_content(const char* file_path) {
/* should read in the content of the file and return it */
return "";
}
constexpr const char* file_path = "some/folder/file.json";
constexpr const char* file_content = read_file_content(file_path);
我遇到了2014年的这个答案https://subdomain.example.com。 teivaz 的解决方案使用宏和#include
魔术很完美。但是,它需要更改输入文件:该文件应将其内容包含在STR(...)中,这可能并不总是可能的。
由于以上答案很老,我认为可能情况已经改变,也许C ++ 17(或可能的C ++ 20)提供了一些功能来克服此问题。
答案 0 :(得分:5)
C ++ 20可能随附std::embed
。看看P1040。如果降落,您可以
constexpr std::span<const std::byte> someBytes = std::embed("pathToFile");