현재 작업 디렉토리를 얻으려면 플랫폼 간 방법이 필요합니다 (예, 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 :
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)'이 잘 정의되어 있습니다. 그들은 모두 같은 방식으로 기능을 확장합니다. –
나는 이것을 받아 들였지만 위의 설명은 정확하다. 내 코드는 메모리 누수가 있었으므로 해결해야합니다. – rubenvb
@RobKennedy - Linux의 경우 대상 버전에 따라 다릅니다. 예를 들어, RHEL5 상자에서'getcwd (NULL)'은 정의되지 않은 것으로 문서화됩니다. –