我需要一种跨平台的方式来获取当前的工作目录(是的,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?