ifs.seekg(0, std::ios::end);
std::ifstream::pos_type data_size = ifs.tellg();
if (data_size == -1) {
std::cerr << "Error: cannot read " << path << std::endl;
return FR_INT_ERR;
}
data.resize(data_size);
ifs.read(data.data(), data_size);
}
Читает нули
Ляяяя, нашёл...
Как ты понял что нули?
Ну, за 5 часов додумался
Чем вам не подходит более простой вариант? std::ifstream ifs(path, std::ifstream::binary); std::string data { std::istreambuf_iterator(ifs), std::istreambuf_iterator<char>{}};
использование костылей вместо std::filesystem::file_size
Мне сказали, что медленно
А в итоге оказалось, что это быстрее))
Вы замеряли? Точно ли скорость в этом случае критична? Может, тогда стоит взять более специализированные инструменты?
А как тут проверку сделать, которая у меня указана?
Вероятно, !ifs.is_open(), !ifs или вместе в зависимости от ожидаемой вами потенциальной ошибки UPD: думаю, operator bool будет достаточно
Спасибо большое. Я уже и забыл про !ifs
Обсуждают сегодня