以前に正常に読み取ったファイルを読み取ろうとしています。私はライブラリを介してそれを読んでおり、そのままライブラリに送信しています(つまり、「myfile.txt」)。ファイルが作業/現在のディレクトリから読み取られることはわかっています。
現在の/作業ディレクトリが何らかの形で変更されたと思われます。現在の作業ディレクトリを確認するにはどうすればよいですか?
以前に正常に読み取ったファイルを読み取ろうとしています。私はライブラリを介してそれを読んでおり、そのままライブラリに送信しています(つまり、「myfile.txt」)。ファイルが作業/現在のディレクトリから読み取られることはわかっています。
現在の/作業ディレクトリが何らかの形で変更されたと思われます。現在の作業ディレクトリを確認するにはどうすればよいですか?
visual-c++ タグを追加したので、それを行う標準の Windows 関数を提案します。GetCurrentDirectory
使用法:
TCHAR pwd[MAX_PATH];
GetCurrentDirectory(MAX_PATH,pwd);
MessageBox(NULL,pwd,pwd,0);
Boostファイルシステムライブラリはクリーンなソリューションを提供します
current_path()
_getcwd
現在の作業ディレクトリを取得するために使用します。
これが私が少し前に得た最もプラットフォームにとらわれない答えです:
Cの「getcwd」関数からstd::stringを返す方法
それはかなり長蛇の列ですが、素晴らしいC ++インターフェースを使用して、本来の機能を正確に実行します(つまり、文字列を返しますが、正確にどのくらいの長さですか?-(const
)char*
)。
の非推奨に関するMSVC警告をシャットダウンするには、次の操作getcwd
を実行できます。
#if _WIN32
#define getcwd _getcwd
#endif // _WIN32
このコードは、Linux と Windows で機能します。
#include <stdio.h> // defines FILENAME_MAX
#include <unistd.h> // for getcwd()
#include <iostream>
std::string GetCurrentWorkingDir();
int main()
{
std::string str = GetCurrentWorkingDir();
std::cout << str;
return 0;
}
std::string GetCurrentWorkingDir()
{
std::string cwd("\0",FILENAME_MAX+1);
return getcwd(&cwd[0],cwd.capacity());
}