Здравствуйте, rg45, Вы писали:
R>Здравствуйте, Kluev, Вы писали:
K>>есть ли в std аналог File.ReadAllBytes()?
R>Готового нету, но можно написать самому:
R> std::copy( R> std::istreambuf_iterator<uint8_t>(input), R> std::istreambuf_iterator<uint8_t>(), R> std::back_inserter(bytes) R> );
Здравствуйте, Kluev, Вы писали:
K>Почитал ответы, задумался. А чем, простите, занимался комитет все эти 20 лет?
О, C++ развивается в эту сторону: потоки, filesystem — вот этого всего очень не хватало.
Чтение файла целиком в память — если это самая большая проблема стандартной библиотеки, то язык, считай, идеален. Я не говорю, что эта штука не нужна (особенно для кода на коленке), но проблем с ней в продакшене будет ещё больше, чем с текущей реализацией. Всё равно придется проверять предварительно размер файла, стоит ли целиком выделять под него память, потом проверять, смогли ли мы её выделить и т.д. обработка ошибок на много строчек.
P.S. Чего бы я хотел с большим удовольствием, так это работу с memory mapped files. Сейчас прямо не знаю на счёт кроссплатформенный решений, но раньше приходилось как следует закапываться в тот же WinAPI.
Re[3]: Как в одну строку кода прочитать содержимое файла в массив?
Здравствуйте, Nuzhny, Вы писали:
N>... N>P.S. Чего бы я хотел с большим удовольствием, так это работу с memory mapped files. Сейчас прямо не знаю на счёт кроссплатформенный решений, но раньше приходилось как следует закапываться в тот же WinAPI.
Откройте для себя буст. Там много интересного есть. И многие вещи со временем переезжают в стандарт.
Re[3]: Как в одну строку кода прочитать содержимое файла в массив?
Здравствуйте, ArtDenis, Вы писали:
AD>Здравствуйте, Kluev, Вы писали:
K>>Почитал ответы, задумался. А чем, простите, занимался комитет все эти 20 лет?
AD>Прямо по твоему вопросу: https://youtu.be/g2iyNH2Gh1k?t=244 (3 минуты видео)
Это все рассуждения в пользу бедных. Криво получается потому, что криво делают, а не из-за высокой производительности, которой кстати и нет.
Re[5]: Как в одну строку кода прочитать содержимое файла в массив?
даже не старались
причем всегда когда заходит флейм на реддите про регексп
выползают члены комитета и рассказывают что этому виной интерфейс этого самого рексепа
я никогда не вчитывался в ихние аргументы
но считаю это пять!
Re[2]: Как в одну строку кода прочитать содержимое файла в массив?
Здравствуйте, Kluev, Вы писали:
K>Почитал ответы, задумался. А чем, простите, занимался комитет все эти 20 лет?
Вы не о том думаете. Подумайте лучше, что придёт школьник-проказник и подсунет вам вместо вашего маленького файла конфигурации, который вы читаете в ReadAllBytes(), тот же самый файл добавив в начало >4294967298 пробелов. Как долго ваша функция будет читать такой файл и как именно вы обрабатываете исключение по нехватки памяти? А что если кто-то использует эту функцию на серверном приложении?
Вы всё ещё уверены, что такая функция имеет право на добавление в стандарт?
И каждый день — без права на ошибку...
Re[3]: Как в одну строку кода прочитать содержимое файла в массив?
Здравствуйте, B0FEE664, Вы писали:
BFE>Вы не о том думаете. Подумайте лучше, что придёт школьник-проказник и подсунет вам вместо вашего маленького файла конфигурации, который вы читаете в ReadAllBytes(), тот же самый файл добавив в начало >4294967298 пробелов.
Мне сомнительно, что ReadAllBytes будет использоваться для чтения текстовых файлов, для этого в .NET есть более подходящий метод — ReadAllText(). Вряд ли какой-нибудь проказник станет вручную править бинарный файл.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[4]: Как в одну строку кода прочитать содержимое файла в массив?
Здравствуйте, rg45, Вы писали:
BFE>>Вы не о том думаете. Подумайте лучше, что придёт школьник-проказник и подсунет вам вместо вашего маленького файла конфигурации, который вы читаете в ReadAllBytes(), тот же самый файл добавив в начало >4294967298 пробелов. R>Мне сомнительно, что ReadAllBytes будет использоваться для чтения текстовых файлов, для этого в .NET есть более подходящий метод — ReadAllText().
Для Json файлов это обычное дело.
R>Вряд ли какой-нибудь проказник станет вручную править бинарный файл.
Зачем вручную?
И каждый день — без права на ошибку...
Re[3]: Как в одну строку кода прочитать содержимое файла в массив?
Здравствуйте, B0FEE664, Вы писали:
BFE> K>Почитал ответы, задумался. А чем, простите, занимался комитет все эти 20 лет? BFE> Вы не о том думаете. Подумайте лучше, что придёт школьник-проказник и подсунет вам вместо вашего маленького файла конфигурации, который вы читаете в ReadAllBytes(), тот же самый файл добавив в начало >4294967298 пробелов. Как долго ваша функция будет читать такой файл и как именно вы обрабатываете исключение по нехватки памяти? А что если кто-то использует эту функцию на серверном приложении? BFE> Вы всё ещё уверены, что такая функция имеет право на добавление в стандарт?
А чем, простите, занимался комитет все эти 20 лет? Надёжную обработку ошибок так и не сделали.