C++: Where does the ofstream class save the files to?

12,890

Solution 1

The stream classes, like all other file-opening functions, use the current directory when you provide a relative path. You can control the current directory with a function like chdir, but a better solution is to use fully qualified file names. Then you remove your program's dependency on the current directory.

Solution 2

The file is simply created in the current working directory. Change working directory or provide full path.

Solution 3

The working directory is initially set when your program starts. When you start it from the command line, you inherit the current working directory from the shell. In CodeBlock, one of the project options is the execution working dir' for debug runs.

(See also http://www.gamedev.net/community/forums/topic.asp?topic_id=571206&whichpage=1)

Share:
12,890
Alex
Author by

Alex

Updated on June 04, 2022

Comments

  • Alex
    Alex almost 2 years

    I moved from Windows to Mac and now I'm experiencing a problem with the file input/output classes: ifstream & ofstream.

    In Windows when you run with g++/Code Blocks

    ofstream out("output.txt");
    out << "TEST";
    out.close();
    

    A new file "output.txt" will be created in the same directory.

    However in MAC OS X, this file is created in my home directory: /Users/USER_NAME/output.txt

    How can I have this file in the same directory together with the executable?

    P.S. I'm using GCC and CodeBlocks. There are no projects - I'm just compiling a single source file.