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

时间:2016-07-29 17:56:21

标签: c++ macos ofstream

我正在使用Mac和Xcode获取以下代码,该代码应获取cinname的{​​{1}}值,并将其写入文件age。< / p>

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; } 存储在哪里(默认情况下?),如果我要打开它?我可以将它存放在特定的位置吗?

2 个答案:

答案 0 :(得分:2)

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

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

程序在启动时更改为某个知名目录是很常见的,并且如果它们是守护程序,则在那里完成所有工作。

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

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

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

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

在任何情况下,都要避免对程序中的绝对文件路径进行硬编码,因为您永远无法确定所有用户计算机上是否存在路径(当然存在异常),也不能确定用户想要文件写在那里。最好以这种或那种方式询问用户并将文件写入该位置。

答案 1 :(得分:2)

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

enter image description here

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

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

  1. 转到方案编辑器中运行下的选项标签。
  2. 点击使用自定义工作目录复选框
  3. 选择或输入工作目录(绝对路径)
  4. 希望这有帮助。