LINUX.ORG.RU
Ответ на: комментарий от pihter

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

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

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

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

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

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

А зачем при таких вводных вообще кресты нужны?

leave ★★★★★
()
Последнее исправление: leave (всего исправлений: 1)
Ответ на: комментарий от fsb4000

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

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

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

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

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

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

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

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

это будет эмуляция raii руками, поскольку другого красивого способа нет.

__attribute__((cleanup(...))) - аналог какого-нибудь defer в go

Lrrr ★★★★★
()
Ответ на: комментарий от 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
()

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

Не нужно.

Forum0888
()
Ответ на: комментарий от LongLiveUbuntu

От char* и прочего наследия сей хочу избавиться.

Ну так почитай книгу издательства ДИАЛОГ-МИФИ про алгоритмы сжатия данных, хотя бы.

i_am_not_ai
()
Ответ на: комментарий от hobbit

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

LongLiveUbuntu ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.