LINUX.ORG.RU

Работа с ФС средствами pure C++

 , ,


1

1

Возможно ли в принципе заменить все эти fopen, fclose и так далее чем-то более вменяемым, например из состава C++ filesystem? Если нет, какой минимальный набор функций для этого еще нужен?

Ответ на: комментарий от pihter

но почему-то закрыть за собой файл вызывает боль.

Потому что есть исключения в каждой строчке. Поэтому чтобы программа оставалась корректной RAII типы намного удобнее, так не будет утечек если где-то появится исключение, которое выше будет перехвачено, но файл уже утёк.

fsb4000 ★★★★★
()
Ответ на: комментарий от pihter

Закрывать за собой квартиру?

А если за тобой гонится двухсот килограммовая горилла, тоже будешь дрожащими руками закрывать квартиру? Это мой друг называется исключение. И тут важно, чтобы дверь квартиры сама захлопывалась.

rupert ★★★★★
()
Ответ на: комментарий от fsb4000

Потому что есть исключения в каждой строчке. Поэтому чтобы программа оставалась корректной RAII типы намного удобнее

Согласен в общем-то, если так писать. Ну так чего ж тогда не накалякать-малякать себе классик-обертку над fopen/fclose?

pihter ★★★★★
()
Ответ на: комментарий от rupert

А если за тобой гонится двухсот килограммовая горилла, тоже будешь дрожащими руками закрывать квартиру?

Откуда гонится, из квартиры? :) Разводись нафиг!

И тут важно, чтобы дверь квартиры сама захлопывалась.

Так можно в трусах остаться на лестнице до вечера. Я труба шатал эти ваши автоматизации: понаобвешиваются автоматизациями, а потом оно само своей жизнью живет и не слушается, мол ей, двери, виднее хочу я ее закрыть или нет. Я тут программист, что мне надо то и будет делать, а не умничать мне тут! Короче - Си :)

pihter ★★★★★
()
Ответ на: комментарий от MKuznetsov

если FILE * или fstream<> то дятел :-)

+1.

на плюсах полезны более высокие абстракции

-1. Unless под «более высокой абстракцией» понимается самый-самый примитивный RAII из возможных:

Closeable fd = open("path", ...);

Здесь open() – обёртка над ::open(2), бросающая исключения при ошибке.

Если же под «более высокой абстракцией» понимаются уж совсем другие вещи (базы данных, mmap, etc.) – то это уже не работа с файлами и потому вне темы топика.

pr849
()
Последнее исправление: pr849 (всего исправлений: 2)
Ответ на: комментарий от mittorn

STL сложно назвать чем-то более вменяемым, чем сишный stdio

…который в свою чередь сложно назвать более вменяемым, чем POSIX-овские open/read/write/close (мы ж тут только про файлы, да?).

pr849
()