我在一个小型C ++程序中打开了一个流程。该文件与程序位于同一目录中。当我用完整的文件路径打开它时它工作正常。 但只用“file.dat”打开它不起作用。 所以我的问题是:如何在不包含其路径的情况下声明文件(或文件)的路径?鉴于它是同一个目录。
if(!readTheFile("/Users/mydirect/Desktop/DV1S5U4/DV1S5U4/timelog.dat")){
cout << "Cant read timelog.dat" << endl;
}
答案 0 :(得分:0)
您的代码应该有效。您遇到的问题是您需要设置工作目录,因为我不知道默认位置。
Product > Edit Scheme > Info > Working Directory
你可以设置它。一旦你设置了它并将.dat放在同一个文件夹中就可以了。
答案 1 :(得分:0)
如果当前工作目录中的文件确实 ,您可以使用"timelog.dat"
,或者至少在POSIX系统上使用"./timelog.dat"
。从它的声音来看,当前的工作目录似乎与你的想法不同。
顺便说一句,请注意,使用std::ofstream
打开阅读的文件效果不会太好:您可能想尝试std::ifstream
。如果当您尝试使用std::ofstream
打开文件时该文件是可写的,则除非您在打开文件时传递参数std::ios_base::app
,否则它将为空。 ...如果文件不可写,则使用std::ofstream
打开它将失败。
答案 2 :(得分:0)
您写道,您的文件位于“与程序相同的目录”中 - 听起来您所追求的不是当前目录,而是可执行文件来自的目录。您可以使用函数_NSGetExecutablePath()
在OS X上找到它 - 这只需要缓冲区和缓冲区大小并返回路径。