Ответ 1
Поскольку вы добавили тег visual-С++, я собираюсь предложить стандартную функцию Windows, чтобы сделать это. GetCurrentDirectory
Использование:
TCHAR pwd[MAX_PATH];
GetCurrentDirectory(MAX_PATH,pwd);
MessageBox(NULL,pwd,pwd,0);
Я пытаюсь прочитать файл, который я прочитал ранее. Я читаю его через библиотеку, и я отправляю ее как есть в библиотеку (т.е. "Myfile.txt" ). Я знаю, что файл читается из рабочего/текущего каталога.
Я подозреваю, что текущий/рабочий каталог каким-то образом изменился. Как проверить, что является текущим/рабочим каталогом?
Поскольку вы добавили тег visual-С++, я собираюсь предложить стандартную функцию Windows, чтобы сделать это. GetCurrentDirectory
Использование:
TCHAR pwd[MAX_PATH];
GetCurrentDirectory(MAX_PATH,pwd);
MessageBox(NULL,pwd,pwd,0);
Библиотека файловой системы Boost обеспечивает чистое решение
current_path()
Используйте _getcwd
, чтобы получить текущий рабочий каталог.
Здесь самый платформо-агностический ответ, который я получил некоторое время назад:
Как вернуть std::string из C 'getcwd' Функция
Это довольно затянуто, но делает именно то, что он должен был делать, с приятным С++-интерфейсом (т.е. он возвращает строку, а не как-давно-вы-точно?) (const
) char*
).
Чтобы закрыть предупреждения MSVC об отказе getcwd
, вы можете сделать
#if _WIN32
#define getcwd _getcwd
#endif // _WIN32
Этот код работает для 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());
}