繁体   English   中英

如果在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 (aka CWD )中创建文件。

程序可以使用chdir()更改其CWD,并使用getcwd()获得其当前的CWD。

通常,程序在启动时会切换到某个知名目录,并在后台执行所有工作(如果它们是守护程序)。

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

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

从外壳运行程序时,CWD最初将是用户在启动应用程序时所在的目录。

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

无论如何,请避免对程序中的绝对文件路径进行硬编码,因为您永远无法确定该路径是否存在于所有用户计算机上(当然也存在例外),也不能确定用户是否希望在其中写入文件。 最好以一种或另一种方式询问用户,然后将文件写入该位置。

我以为我会添加一个针对Xcode的答案。 如果您正在Xcode(IDE)中构建和运行可执行文件,则输出文件(如果未为文件名指定绝对路径)将与Build Products进入同一目录,因为构建的可执行文件将在该目录中是。 这将成为Xcode运行可执行文件时Jesper Juhl提到的current working directory 要找到该位置,请在Project Navigator中单击产品 (在下面的屏幕截图中,这是左窗格中的File Out可执行文件)。 然后在右上方窗格中的“ 文件检查器”中查找。 完整路径的目录部分是输出文件所在的位置。

在此处输入图片说明

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

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

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

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM