Попался мне такой короткий код, который пытается читать из файла число, и если не может, то пишет туда то, что было в переменной (предполагается, что она проинициализирована):
bool ok = ifstream(filename) >> i;
if (!ok) ok = ofstream(filename) << i;
Но правильный ли он? Вопрос вызывает вторая строчка. Если мне память не изменяет, стримы в плюсах буферизированные, и запись в файл произойдет если мы вызовем close(), flush(), или напишем << endl. Не будет ли такого, что ok у нас окажется true, но в момент вызова деструктора стрим не сможет записать в файл данные, потому что, например, нет прав на запись в этот файл?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей