Информация об изменениях

Сообщение Re[25]: Как в одну строку кода прочитать содержимое файла в от 08.01.2024 19:07

Изменено 08.01.2024 20:14 rg45

Re[25]: Как в одну строку кода прочитать содержимое файла в
Здравствуйте, ·, Вы писали:

·> Ок, не нули, а втихушку потерянные данные, это ещё хуже. НЕЛЬЗЯ терять данные. Этому ещё в садике учат. А что, кстати, для несуществующего файла будет? Или если прав на чтение нет?

·>Или это ты тоже всё "скучными частными случаями" назовёшь??!

Да на тебе, не плачь, девчонка:

std::vector<char> read_all_bytes(const std::string& path)
{
   if (std::ifstream input(path, std::ios_base::binary | std::ios_base::ate); input)
   {
      std::vector<char> bytes(input.tellg());
      input.seekg(0);
      input.read(bytes.data(), bytes.size());

      if (input.gcount() != std::streamsize(bytes.size()))
         throw std::runtime_error("File reading error");

      return bytes;
   }
   throw std::runtime_error("File not found or access denied: " + path);
}
Re[25]: Как в одну строку кода прочитать содержимое файла в
Здравствуйте, ·, Вы писали:

·> Ок, не нули, а втихушку потерянные данные, это ещё хуже. НЕЛЬЗЯ терять данные. Этому ещё в садике учат. А что, кстати, для несуществующего файла будет? Или если прав на чтение нет?

·>Или это ты тоже всё "скучными частными случаями" назовёшь??!

Да на тебе, не плачь, девчонка:

std::vector<char> read_all_bytes(const std::string& path)
{
   if (std::ifstream input(path, std::ios_base::binary | std::ios_base::ate); input)
   {
      std::vector<char> bytes(input.tellg());
      input.seekg(0);
      input.read(bytes.data(), bytes.size());

      if (input.gcount() != std::streamsize(bytes.size()))
         throw std::runtime_error("File reading error");

      return bytes;
   }
   throw std::runtime_error("File not found or access denied: " + path);
}


Просто как эскиз в перспективу. Обработка ошибок ЕСЛИ она понадобится. А не понадобится, то и версия без этих проверок тоже вполне имеет право на существование в каком-то локальном контекте.