C++: куда класс ofstream сохраняет файлы?

Я перешел с 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

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

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

4 ответа

Решение

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

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

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

(См. Также http://www.gamedev.net/community/forums/topic.asp?topic_id=571206&whichpage=1%EF%BF%BD).

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

Другие вопросы по тегам