我需要一個跨平臺的方式來獲取當前的工作目錄(是的,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