Как мне найти текущий каталог? - PullRequest
14 голосов
/ 26 января 2011

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

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

Ответы [ 5 ]

24 голосов
/ 26 января 2011

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

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

TCHAR pwd[MAX_PATH];
GetCurrentDirectory(MAX_PATH,pwd);
MessageBox(NULL,pwd,pwd,0);
8 голосов
6 голосов
/ 26 января 2011

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

2 голосов
/ 26 января 2011

Вот наиболее независимый от платформы ответ, который я получил некоторое время назад:

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

Это довольно долгос хорошим интерфейсом C ++ (т. е. он возвращает строку, а не как долго вы точно? - (const) char*).

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

#if _WIN32
    #define getcwd _getcwd
#endif // _WIN32
0 голосов
/ 26 апреля 2019

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