Сообщение Re: Как в одну строку кода прочитать содержимое файла в масс от 05.01.2024 19:47
Изменено 05.01.2024 19:54 rg45
Re: Как в одну строку кода прочитать содержимое файла в массив?
Здравствуйте, Kluev, Вы писали:
K>есть ли в std аналог File.ReadAllBytes()?
Тут нашлись такие, кто докопался до низкой эффективности. Ну так вот, если важно быстродействие, то можно использовать чуть более длинную версию — аж целых 4 строчки
K>есть ли в std аналог File.ReadAllBytes()?
Тут нашлись такие, кто докопался до низкой эффективности. Ну так вот, если важно быстродействие, то можно использовать чуть более длинную версию — аж целых 4 строчки
std::vector<uint8_t> read_all_bytes(const std::string& path)
{
std::basic_ifstream<uint8_t> input(path.c_str(), std::ios_base::binary);
std::vector<uint8_t> bytes(std::filesystem::file_size(path));
input.read(bytes.data(), bytes.size());
return bytes;
}
Re: Как в одну строку кода прочитать содержимое файла в масс
Здравствуйте, Kluev, Вы писали:
K>есть ли в std аналог File.ReadAllBytes()?
Тут нашлись такие, кто докопался до низкой эффективности. Ну так вот, если важно быстродействие, то можно использовать чуть более длинную версию — аж целых 4 строчки
Ну а оптимизированная версия save_all_bytes все так же в две строчки и даже чуть меньше букв:
K>есть ли в std аналог File.ReadAllBytes()?
Тут нашлись такие, кто докопался до низкой эффективности. Ну так вот, если важно быстродействие, то можно использовать чуть более длинную версию — аж целых 4 строчки
std::vector<uint8_t> read_all_bytes(const std::string& path)
{
std::basic_ifstream<uint8_t> input(path.c_str(), std::ios_base::binary);
std::vector<uint8_t> bytes(std::filesystem::file_size(path));
input.read(bytes.data(), bytes.size());
return bytes;
}
Ну а оптимизированная версия save_all_bytes все так же в две строчки и даже чуть меньше букв:
void save_all_bytes(const std::vector<uint8_t>& bytes, const std::string& path)
{
std::basic_ofstream<uint8_t> output(path.c_str(), std::ios_base::binary);
output.write(bytes.data(), bytes.size());
}