【发布时间】:2016-09-09 23:39:04
【问题描述】:
我正在尝试在 C++ 中获取当前正在运行的文件名。我写了一个简单的代码,它同时使用了 argv[0] 和 boost current_path() 方法。该文件被编译成可执行文件mainWindow。
#include "boost/filesystem.hpp"
int main(int argc, char* argv[])
{
boost::filesystem::path full_path( boost::filesystem::current_path() );
std::cout << full_path.string() << "\n";
std::cout << argv[0] << "\n\n";
return 0;
}
有趣的是,每种方法的输出都不同。
argv[0] 输出为:
../VENTOS/src/loggingWindow/mainWindow
current_path() 输出为:
/home/mani/Desktop/VENTOS_Redpine
我没有直接从终端运行我的程序 (mainWindow)。另一个应用程序正在调用我的程序,我想这就是输出不同的原因。我说的对吗?
我的第二个问题是:不使用 argv[0] 选项并且仅依赖于 boost 文件系统方法,我怎样才能获得与 argv[0] 相同的结果?
【问题讨论】: