16

我正在尝试读取我之前成功读取的文件。我正在通过图书馆阅读它,并将它按原样发送到图书馆(即“myfile.txt”)。我知道该文件是从工作/当前目录中读取的。

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

4

5 回答 5

24

由于您添加了 visual-c++ 标记,因此我将建议使用标准的 windows 函数来执行此操作。获取当前目录

用法:

TCHAR pwd[MAX_PATH];
GetCurrentDirectory(MAX_PATH,pwd);
MessageBox(NULL,pwd,pwd,0);
于 2011-01-26T17:23:59.477 回答
8

Boost 文件系统库提供了一个干净的解决方案

current_path()
于 2011-01-26T17:28:14.970 回答
6

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

于 2011-01-26T17:19:59.843 回答
4

这是我不久前得到的最与平台无关的答案:

如何从 C 的“getcwd”函数返回 std::string

它相当冗长,但完全按照它应该做的,带有一个漂亮的 C++ 接口(即它返回一个字符串,而不是一个你到底有多长?-( const) char*)。

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

#if _WIN32
    #define getcwd _getcwd
#endif // _WIN32
于 2011-01-26T17:44:03.827 回答
4

此代码适用于 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());
}
于 2019-04-26T13:03:56.040 回答