我正在使用Mac和Xcode获取以下代码,该代码应获取cin
和name
的{{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;
}
存储在哪里(默认情况下?),如果我要打开它?我可以将它存放在特定的位置吗?
答案 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
可执行文件)。然后查看右上方窗格中的文件检查器。 完整路径的目录部分是输出文件的位置。
如果您确实指定了相对路径,那么该位置将相对于此目录的构建产品,并且正如Jesper所说,您应该避免在程序中编写绝对路径。
在Xcode中,您还可以通过编辑方案来更改current working directory
:
希望这有帮助。