Search code examples
c++windows-7writefile

Unable to write file in C++


I'm trying to to the most basic of things .... write a file in C++, but the file is not being written. I don't get any errors either. Maybe I'm missing something obvious ... or what?

I thought there was something wrong with my code, but I also tried a sample I found on the net and still no file is created.

This is the code:

ofstream myfile;
myfile.open ("C:\\Users\\Thorgeir\\Documents\\test.txt");
myfile << "Writing this to a file.\n";
myfile.close();

I've also tried creating the file manually beforehand, but it's not updated at all.

I'm running Windows 7 64bit if that has got something to do with this. It's like file-write operations are completely forbidden and no error messages or exceptions are shown.


Solution

  • You need to open the file in write mode:

    myfile.open ("C:\\Users\\Thorgeir\\Documents\\test.txt", ios::out);
    

    Make sure to look at the other options for that second argument, as well. If you're writing binary data you'll need ios::binary for example.

    You should also be checking the stream after opening it:

    myfile.open(...
    if (myfile.is_open())
        ...
    

    Update:

    AraK is right, I forgot that an ofstream is in write mode by default, so that's not the problem.

    Perhaps you simply don't have write/create permissions to the directory? Win7 defaults a lot of directories with special permissions of "deny all". Or perhaps that file already exists and is read-only?