fstream file I / O вопрос - когда закрыть файловый поток - PullRequest
1 голос
/ 12 мая 2010

Я пытаюсь понять, нужно ли мне вызывать close для объекта fstream, если первоначальное открытие не удалось.

т.е.

std::fstream strm;
strm.open( "filename" );

if( ! strm.fail() )
{
    // Do something

    strm.close();  // [1]
}

strm.close();  // [2]

Где следует вызывать close - всегда ли он вызывается [2] или только если открытие завершается [1]?

Возможно, я перехожу через край, но исходя из способа, которым Windows API обычно делает это, у меня есть CloseHandle (...); , встроенный в мой разум: -)

Ответы [ 2 ]

3 голосов
/ 12 мая 2010

Поток будет автоматически закрыт деструктором fstream - нет необходимости явно его закрывать, если только логика вашей программы не требует этого, например, если вы собираетесь открыть его заново. Однако закрытие потока, который не открылся, не вызовет никаких проблем.

0 голосов
/ 12 мая 2010

Нет, если поток не был открыт, закрывать нечего.

...