获取文件所在目录的最简单方法是什么?我正在使用它来查找工作目录.
string filename = "C:\MyDirectory\MyFile.bat"
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我应该得到"C:\ MyDirectory".
标题有点啰嗦,但基本上,我写了一个应用程序,读取和写入其输入和输出到文本文件.整个时间,它会直接在与我的Xcode派生数据 - > project-> build-> products-> debug文件夹相同的目录中读取和写入文件.这是写入和读取所有内容的地方.我没有为应用程序设置自定义路径,因此只需保存应用程序所在的位置即可.有史以来第一次,我运行Apple的Instruments应用程序,试图学习如何使用分析器.在选择此应用程序作为Instruments中的目标后不久,我又回到了Xcode应用程序来运行该程序.在Xcode中一切正常.它从文件中读取并打印到与文件夹相同位置的文件,但是如果我尝试通过单击文件并使其打开终端来运行实际程序本身,则它不再读取或打印到应用程序所在的目录相反,它从我的主文件夹打印和读取.我不知道是什么改变了或是什么导致它改变,但我希望它是一个简单的修复.我希望应用程序能够从文件中读取文件并从其所在的目录中打印文件.我不确定它是Xcode设置还是终端设置.
任何帮助将不胜感激.
更新1:尝试没有运气:
目录字段是空白的,所以我认为这将是解决方案,但填写它的建议没有做任何事情来缓解这个问题.
更新2:
刚刚尝试删除首选项文件,仍然没有解决方案.我愿意给别人一个声誉.我没有很多,因为我是一个新成员,但我会给那个人认为是公平的,给予解决它的人.我很绝望,真的不想等待2天才能解决这个问题.
更新3:
尝试将方案部分的"配置文件(发布) - >选项区域中的默认路径更改为更新1中建议的默认变量.没有运气.我开始失去理智.
更新4:
我已经尝试完全删除该方案并制作一个新方案,希望可能存在一些与该方案混淆的东西,但这并没有解决问题.在Xcode中运行应用程序时的输入和输出仍在使用工作目录,而在调试文件夹中运行可执行文件则使用主文件夹.
更新5:
刚刚在旧的iMac和Xcode设置(OS 10.8.5和Xcode 5.1.1)上测试了它,它似乎正常工作,读取和写入调试文件夹中应用程序的当前工作目录.
下面的代码给出了Linux上exe文件的当前路径:
#include <iostream>
std::string getExePath()
{
char result[ PATH_MAX ];
ssize_t count = readlink( "/proc/self/exe", result, PATH_MAX );
return std::string( result, (count > 0) ? count : 0 );
}
int main()
{
std::cout << getExePath() << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我运行它时,给出了exe的当前路径和exe的名称,例如:
/home/.../Test/main.exe
Run Code Online (Sandbox Code Playgroud)
我想只得到
/home/.../Test/
Run Code Online (Sandbox Code Playgroud)
我知道我可以解析它,但有没有更好的方法呢?