Как найти текущий каталог?

Я пытаюсь прочитать файл, который я прочитал ранее. Я читаю его через библиотеку, и я отправляю ее как есть в библиотеку (т.е. "Myfile.txt" ). Я знаю, что файл читается из рабочего/текущего каталога.

Я подозреваю, что текущий/рабочий каталог каким-то образом изменился. Как проверить, что является текущим/рабочим каталогом?

Ответы

Ответ 1

Поскольку вы добавили тег visual-С++, я собираюсь предложить стандартную функцию Windows, чтобы сделать это. GetCurrentDirectory

Использование:

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

Ответ 3

Используйте _getcwd, чтобы получить текущий рабочий каталог.

Ответ 4

Здесь самый платформо-агностический ответ, который я получил некоторое время назад:

Как вернуть std::string из C 'getcwd' Функция

Это довольно затянуто, но делает именно то, что он должен был делать, с приятным С++-интерфейсом (т.е. он возвращает строку, а не как-давно-вы-точно?) (const) char*).

Чтобы закрыть предупреждения MSVC об отказе getcwd, вы можете сделать

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

Ответ 5

Этот код работает для 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());
}