2016-09-19 6 views
2

По какой-то причине, следующий код не может создать новый файл, то есть, если файл уже существует, то она переписывает его, в противном случае он не делает вообще ничего:C++/fstream: не может создать новый файл

#include <fstream> 

int main() 
{ 
    std::fstream fs("test_out.log"); // <-- does not create a new file! 
    //std::fstream fs("test_out.log", std::ios_base::in | std::ios_base::out); // <-- does not create a new file! 

    fs << "TEST" << std::endl; 
} 

Что я сделал неправильно?

C++ компилятор: лязг
система: OS-X 10.9.5

+0

в конце концов, вы должны написать fs.close() –

+2

@ Android400: руководство близко не имеет никакого смысла. После уничтожения объекта 'fs' при выходе из основной области файл закрывается, а fs разрушается. – Klaus

+0

Да в этом примере сделать руководство не имеет смысла, но в другом использовании это не бесполезно. –

ответ

2

Если вы хотите создать новый файл для записи:

std::ofstream fs("test_out.log"); 

сделать работу.

Если вы используете std::ios_base::in файл должен существовать

+0

почему 'std :: fstream fs (" test_out.log ", std :: ios_base :: in | std :: ios_base :: out);' не удалось создать файл? –

+2

@ GilsonPJ: Если вы используете 'std :: ios_base :: in', файл ДОЛЖЕН существовать. – Klaus

+0

Спасибо. без 'in' он создает файл –

Смежные вопросы