如果我在 Mac 上使用 ofstream 写入文件,我的文件存储在哪里?

Where is my file stored if I write a file using ofstream on Mac?

我正在使用 Mac 和 Xcode 作为我的以下代码,它们应该为 nameage 获取我的 cin 值并写入它们在文件 fileProcessingTrial.txt.

#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
using namespace std;

int main()
{
    // insert code here...
    string name;
    int age;
    ofstream fileProcessing("fileProcessingTrial.txt", ios::out);
    cout<<"Please enter your name: "<<endl;
    cin>>name;
    cout<<"Please enter your age: "<<endl;
    cin>>age;
    fileProcessing<<name<<" "<<age<<endl;
    return 0;
}

然后我的文件fileProcessingTrial.txt存储在哪里(默认情况下?)如果我想打开它?我可以将它存储在特定位置吗?

如果您不指定路径(绝对或相对),则文件将在您创建文件时在应用程序的 current working directory(又名 CWD)中创建。

一个程序可以用 chdir() 改变它的 CWD 并用 getcwd() 获得它的当前 CWD。

如果程序是守护进程,通常会在启动时更改到某个众所周知的目录并在那里完成所有工作。

某些应用程序确定其可执行文件的位置(例如,通过读取 Linux 上的 /proc/self/exe)然后将文件写入相对于该目录的目录也很常见。

其他常用的选项是;写入用户主目录或命令行或配置文件中指定的目录。

当您 运行 来自 shell 的程序时,CWD 最初将是用户启动应用程序时所在的目录。

当 运行从 IDE 连接时,CWD 通常由 IDE 设置到其配置中指定的某个位置。

在任何情况下,避免在程序中硬编码绝对文件路径,因为您永远无法确定路径存在于所有用户机器上(当然存在例外),也无法确定用户 想要 文件写在那里。最好以某种方式询问用户并将文件写入该位置。

我想我会添加一个特定于 Xcode 的答案。如果您正在构建 运行 Xcode 中的可执行文件(IDE),那么输出文件(如果您没有指定文件名的绝对路径)将转到同一目录作为 Build Products 因为那是构建的可执行文件所在的位置。这成为 Jesper Juhl 在 Xcode 运行可执行文件时提到的 current working directory。要找到它,请单击 Project Navigator 中的 product(在下面的屏幕截图中,这是左侧窗格中的 File Out 可执行文件).然后查看右上窗格中的文件检查器完整路径 的目录部分是您的输出文件所在的位置。

如果您确实指定了相对路径,那么构建产品的位置将相对于此目录,正如 Jesper 所说,您应该避免在程序中编码绝对路径。

在Xcode中,您还可以通过编辑方案更改current working directory

  1. 转到方案编辑器中运行下的选项选项卡。
  2. 单击使用自定义工作目录复选框
  3. Select或进入工作目录(绝对路径)

希望这对您有所帮助。