C++ 正在查找执行文件的目录?

C++ 正在查找执行文件的目录?,c++,file,boost,filesystems,filenames,C++,File,Boost,Filesystems,Filenames,我想用运行程序的目录的参数调用opendir()。如果可能,它将是一种平台独立的方式。我很困惑,因为a的公认答案看起来并不独立于平台。其他答案说使用Boost,但不推荐回复statesinitial\u path()。如果不能在独立于平台的环境下完成,则目标是Windows。这是跨平台的,并告诉您程序的当前工作目录 char*getcwd(char*buf,size\u t size) 这是一个posix函数,应该在Linux、OsX和Windows上得到支持。请在此处阅读: 初始路径()已被弃

我想用运行程序的目录的参数调用
opendir()
。如果可能,它将是一种平台独立的方式。我很困惑,因为a的公认答案看起来并不独立于平台。其他答案说使用Boost,但不推荐回复states
initial\u path()
。如果不能在独立于平台的环境下完成,则目标是Windows。

这是跨平台的,并告诉您程序的当前工作目录

char*getcwd(char*buf,size\u t size)

这是一个posix函数,应该在Linux、OsX和Windows上得到支持。请在此处阅读:


初始路径()
已被弃用,但它在程序开始时为您有效地调用了
当前路径()
,然后在任何后续调用中返回该结果。因此,您只需在程序开始时调用
current\u path()
,并将其存储在某个位置。

大致相同的问题是

您也可以从这里获得帮助:

您也可以使用这些命令

initial_path()
current_path()

对于当前工作目录,您是否尝试过使用文字点“.”的
opendir(.)
?您不能拥有完全独立于平台的路径处理,因为并非所有平台都有路径。:-)您链接到的第二个问题的答案是:在程序启动时获取当前目录,并在以后需要时记住它。一条评论证实Boost的
当前路径可以帮助您完成该任务的第一部分。第一个问题的公认答案只是当前路径的另一个实现;答案只是忽略了指出您应该在程序的早期调用它,然后参考保存的结果。getcwd在Windows上受支持,但称为_getcwdsize_t通常是大多数平台上寄存器的大小。大小将在linux和OsX上工作。在Windows上使用DWORD。@Celeritas:您将
buf
的大小作为第二个参数传递,以便它不会超出缓冲区的末尾。