если у вас нет или вы хотите использовать

о я просто использовал бы ввод-вывод в стиле C, но я пробую современный подход к C ++, включая использование специфических возможностей C ++ 17std::byte а такжеstd::filesystem.

Чтение всего файла в память, традиционный метод:

#include <stdio.h>
#include <stdlib.h>

char *readFileData(char *path)
{
    FILE *f;
    struct stat fs;
    char *buf;

    stat(path, &fs);
    buf = (char *)malloc(fs.st_size);

    f = fopen(path, "rb");
    fread(buf, fs.st_size, 1, f);
    fclose(f);

    return buf;
}

Чтение всего файла в память, современный подход:

#include <filesystem>
#include <fstream>
#include <string>
using namespace std;
using namespace std::filesystem;

auto readFileData(string path)
{
    auto fileSize = file_size(path);
    auto buf = make_unique<byte[]>(fileSize);
    basic_ifstream<byte> ifs(path, ios::binary);
    ifs.read(buf.get(), fileSize);
    return buf;
}

Это выглядит правильно? Можно ли это улучшить?

Ответы на вопрос(1)

Ваш ответ на вопрос