我如何找到当前目录?

时间:2011-01-26 17:17:44

标签: c++ visual-c++ working-directory

我正在尝试读取我之前成功读取的文件。 我正在通过一个库阅读它,我将它原样发送到库(即“myfile.txt”)。 我知道该文件是从working / current目录中读取的。

我怀疑当前/工作目录已经以某种方式发生了变化。 我如何检查当前/工作目录是什么?

5 个答案:

答案 0 :(得分:24)

由于你添加了visual-c ++标签,我将建议使用标准的windows功能来实现它。 GetCurrentDirectory

用法:

TCHAR pwd[MAX_PATH];
GetCurrentDirectory(MAX_PATH,pwd);
MessageBox(NULL,pwd,pwd,0);

答案 1 :(得分:8)

Boost filesystem库提供了一个干净的解决方案

current_path()

答案 2 :(得分:6)

使用_getcwd获取当前工作目录。

答案 3 :(得分:2)

这是我前一段时间最平台无关的答案:

How return a std::string from C's "getcwd" function

这是非常啰嗦的,但确实完成了应该做的事情,有一个很好的C ++接口(即它返回一个字符串,而不是一个多长时间你是什么? - (constchar*)。

要关闭有关弃用getcwd的MSVC警告,您可以执行

#if _WIN32
    #define getcwd _getcwd
#endif // _WIN32

答案 4 :(得分:0)

此代码适用于Linux和Windows:

#include <stdio.h>  // defines FILENAME_MAX
#include <unistd.h> // for getcwd()
#include <iostream>

std::string GetCurrentWorkingDir();

int main()
{
   std::string str = GetCurrentWorkingDir();
   std::cout << str;
   return 0;
}
std::string GetCurrentWorkingDir()
{
    std::string cwd("\0",FILENAME_MAX+1);
    return getcwd(&cwd[0],cwd.capacity());
}