Мне нужен кросс-платформенный способ получить текущий рабочий каталог (да, getcwd делает то, что я хочу). Я думал, что это может сделать трюк:
#ifdef _WIN32
#include <direct.h>
#define getcwd _getcwd // stupid MSFT "deprecation" warning
#elif
#include <unistd.h>
#endif
#include <string>
#include <iostream>
using namespace std;
int main()
{
string s_cwd(getcwd(NULL,0));
cout << "CWD is: " << s_cwd << endl;
}
Я получил это сообщение:
Не должно быть утечек памяти, и он должен работать и на Mac, правильно?
ОБНОВЛЕНИЕ: я боюсь, что что-то здесь все еще не так (я пытаюсь избежать создания массива char с определенной длиной, так как нет подходящего способа получить приличную длину для getcwd):
char* a_cwd = getcwd(NULL,0);
string s_cwd(a_cwd);
free(a_cwd); // or delete a_cwd?