Files

File path

#include <filesystem>

static std::ifstream open_file(const std::string& folder_name, const std::string& file_name) {
    std::filesystem::path file_path = std::filesystem::path(root);
    file_path /= folder_name;
    file_path /= file_name;
    return std::ifstream(file_path, std::ios::binary);
}

Get content as string

std::ifstream in(filename, std::ios::in | std::ios::binary);
if (!in) {
    std::cerr << "could not open " << filename << std::endl;
    return 1;
}
std::ostringstream contents;
contents << in.rdbuf();
std::string data = contents.str();

Get binary content as buffer

bool load_file(const char* filename, unsigned char** buf, int& size)
{
    if (std::ifstream file_stream{filename, std::ios::binary | std::ios::ate}) {
        size = file_stream.tellg();
        std::string str(size, '\0');
        file_stream.seekg(0);
        if (file_stream.read(&str[0], size)) {
            *buf = static_cast<unsigned char*>(malloc(size));
            str.copy(reinterpret_cast<char*>(*buf), size);
            return true;
        }
        std::cerr << "Reading of file " << filename << " failed" << std::endl;
        return false;
    }
    std::cerr << "Can't open file " << filename << std::endl;
    return false;
}

Get file size

TODO