C++ 编译时读取文件(constexpr或其他)

C++ 编译时读取文件(constexpr或其他),c++,file-io,c++17,constexpr,C++,File Io,C++17,Constexpr,C++17是否提供了在编译时加载/读取文件的方法?更具体地说,我想将文件内容加载到const char*或std::string\u视图中,等等。例如: constexpr const char*读取文件内容(const char*文件路径){ /*应该读入文件的内容并返回它*/ 返回“”; } constexpr const char*file_path=“some/folder/file.json”; constexpr const char*文件内容=读取文件内容(文件路径); 我在2

C++17是否提供了在编译时加载/读取文件的方法?更具体地说,我想将文件内容加载到
const char*
std::string\u视图中,等等。例如:

constexpr const char*读取文件内容(const char*文件路径){
/*应该读入文件的内容并返回它*/
返回“”;
}
constexpr const char*file_path=“some/folder/file.json”;
constexpr const char*文件内容=读取文件内容(文件路径);

我在2014年找到了这个答案。teivaz的解决方案非常有效,使用了一些宏&
#include
magic。但是,它要求更改输入文件:文件应将其内容包含在STR(…)中,这可能并不总是可能的


因为上面的答案已经很老了,我想可能事情已经改变了,也许C++17(或者可能是C++20)提供了一些功能来克服这个问题。

C++20可能随
std::embed
一起提供。看一看。如果这个着陆了,你可以

constexpr std::span<const std::byte> someBytes = std::embed("pathToFile");
constepr std::span someBytes=std::embed(“pathToFile”);

Beyond
#include
在编译时无法读取文件。读取通用文件需要调用操作系统,而这在编译时是无法完成的。如果需要静态地将文件内容复制到源文件中,为什么不简单地将其复制到源文件中?还有,为什么要这样做?你需要解决的真正问题是什么?目前,这篇文章是一篇。哦,根据你的平台,有一些非标准的解决方法。。。例如,如果您是在Windows上构建的,那么您可以创建一个资源文件,该文件可以在编译时包含任意数据和文件。然后您可以使用Windows特定的函数在运行时从资源中读取数据。@Someprogrammerdude我不同意。我的问题是关于功能的存在/如何做某事。就像很多其他问题一样,这个问题很重要,也有很多好的答案,这正是很多人使用SE的目的。正是我想知道的。谢谢你直截了当的回答。