если у вас нет или вы хотите использовать
о я просто использовал бы ввод-вывод в стиле 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;
}
Это выглядит правильно? Можно ли это улучшить?