C ++: куда класс ofstream сохраняет файлы? - PullRequest
4 голосов
/ 25 октября 2010

Я перешел с Windows на Mac и теперь у меня проблема с классами ввода / вывода файлов: ifstream & ofstream.

В Windows при работе с g ++ / Code Blocks

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

Новый файл "output.txt" будет создан в той же директории .

Однако в MAC OS X этот файл создается в моем домашнем каталоге: /Users/USER_NAME/output.txt

Как мне поместить этот файл в один каталог вместе с исполняемым файлом?

P.S. Я использую GCC и CodeBlocks. Нет проектов - я просто компилирую один исходный файл.

Ответы [ 4 ]

5 голосов
/ 25 октября 2010

Классы потоков, как и все другие функции открытия файлов, используют текущий каталог , когда вы указываете относительный путь .Вы можете управлять текущим каталогом с помощью функции, подобной chdir, но лучшим решением будет использование полных имен файлов.Затем вы удаляете зависимость вашей программы от текущего каталога.

2 голосов
/ 25 октября 2010

Файл просто создается в текущем рабочем каталоге.Измените рабочий каталог или укажите полный путь.

1 голос
/ 26 октября 2010

Рабочий каталог изначально устанавливается при запуске вашей программы. Когда вы запускаете его из командной строки, вы наследуете текущий рабочий каталог из оболочки. В CodeBlock одним из параметров проекта является рабочая директория выполнения для отладочных прогонов.

(см. Также http://www.gamedev.net/community/forums/topic.asp?topic_id=571206&whichpage=1&#3648738)

0 голосов
/ 25 октября 2010

Вам потребуется указать полный, абсолютный путь к файлу, который вы пытаетесь создать.

...