![](/img/trans.png)
[英]Sublime Text, my file is stored in my home folder when I write a file using fstream on Mac
[英]Where is my file stored if I write a file using ofstream on Mac?
我在下面的代码中使用Mac和Xcode,它们应该获取我的name
和age
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
:
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.