4

我从 Windows 迁移到 Mac,现在我遇到了文件输入/输出类的问题:ifstream& ofstream

在 Windows 中使用 g++/代码块运行时

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

将在同一目录中创建一个新文件“output.txt”。

但是在 MAC OS X 中,这个文件是在我的主目录中创建的:/Users/USER_NAME/output.txt

如何将此文件与可执行文件放在同一目录中?

PS 我正在使用 GCC 和 CodeBlocks。没有项目——我只是在编译一个源文件。

4

4 回答 4

5

与所有其他文件打开函数一样,流类在您提供相对路径时使用当前目录。您可以使用类似的函数来控制当前目录,但更好的解决方案是使用完全限定的文件名。然后你删除你的程序对当前目录的依赖。chdir

于 2010-10-25T17:09:43.953 回答
2

该文件只是在当前工作目录中创建。更改工作目录或提供完整路径。

于 2010-10-25T17:10:33.517 回答
1

工作目录最初是在程序启动时设置的。当您从命令行启动它时,您会从 shell 继承当前工作目录。在 CodeBlock 中,项目选项之一是用于调试运行的执行工作目录。

(另见http://www.gamedev.net/community/forums/topic.asp?topic_id=571206&whichpage=1�

于 2010-10-26T11:28:41.980 回答
0

您需要为您尝试创建的文件提供完整的绝对路径。

于 2010-10-25T17:07:31.553 回答