現在の作業ディレクトリを取得するためのクロスプラットフォームの方法が必要です (はい、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 でも動作するはずですよね?
更新:ここでまだ何かが間違っているのではないかと心配しています(getcwdに適切な長さを取得する適切な方法がないため、決定された長さでchar配列を作成しないようにしています):
char* a_cwd = getcwd(NULL,0);
string s_cwd(a_cwd);
free(a_cwd); // or delete a_cwd?