我需要一个跨平台的方式来获取当前的工作目录(是的,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上工作,对吗?
UPDATE:我担心的东西仍然是错在这里(我试图避免产生与确定长度的字符数组,因为有以获取GETCWD一个体面的长度没有正确的方法):
char* a_cwd = getcwd(NULL,0);
string s_cwd(a_cwd);
free(a_cwd); // or delete a_cwd?
如果他只对Windows,Linux和Max OS X的兼容性感兴趣,那么'getcwd(NULL)'是明确定义的。它们都以同样的方式扩展功能。 – 2010-05-19 19:35:54
我接受了这个,但上面的评论是正确的。我的代码确实有内存泄漏,所以需要解决 – rubenvb 2010-05-19 20:07:27
@RobKennedy - 对于Linux,它取决于所针对的版本。例如,在RHEL5框中,'getcwd(NULL)'仍被记录为未定义。 – 2010-05-19 21:13:47