Чтение файла во время компиляции (constexpr или другое) - PullRequest
1 голос
/ 13 июня 2019

Предлагает ли 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 года. Решение teivaz отлично работает, используя некоторый макрос & #include магия. Однако для этого требуется изменить входной файл: файл должен содержать свое содержимое в STR (...) , что не всегда возможно.

Поскольку приведенный выше ответ довольно старый, я подумал, что, возможно, все изменилось, и, возможно, C ++ 17 (или, возможно, C ++ 20) предлагает некоторые функциональные возможности для преодоления этой проблемы.

1 Ответ

5 голосов
/ 13 июня 2019

C ++ 20 может поставляться с std::embed. Посмотрите на P1040 . Если это приземлится, вы можете

constexpr std::span<const std::byte> someBytes = std::embed("pathToFile");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...