Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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.

like image 557
Alex Avatar asked Feb 25 '23 23:02

Alex


2 Answers

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.

like image 141
Rob Kennedy Avatar answered Mar 08 '23 09:03

Rob Kennedy


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

like image 29
Šimon Tóth Avatar answered Mar 08 '23 09:03

Šimon Tóth