16

以前に正常に読み取ったファイルを読み取ろうとしています。私はライブラリを介してそれを読んでおり、そのままライブラリに送信しています(つまり、「myfile.txt」)。ファイルが作業/現在のディレクトリから読み取られることはわかっています。

現在の/作業ディレクトリが何らかの形で変更されたと思われます。現在の作業ディレクトリを確認するにはどうすればよいですか?

4

5 に答える 5

24

visual-c++ タグを追加したので、それを行う標準の Windows 関数を提案します。GetCurrentDirectory

使用法:

TCHAR pwd[MAX_PATH];
GetCurrentDirectory(MAX_PATH,pwd);
MessageBox(NULL,pwd,pwd,0);
于 2011-01-26T17:23:59.477 に答える
8

Boostファイルシステムライブラリはクリーンなソリューションを提供します

current_path()
于 2011-01-26T17:28:14.970 に答える
6

_getcwd現在の作業ディレクトリを取得するために使用します。

于 2011-01-26T17:19:59.843 に答える
4

これが私が少し前に得た最もプラットフォームにとらわれない答えです:

Cの「getcwd」関数からstd::stringを返す方法

それはかなり長蛇の列ですが、素晴らしいC ++インターフェースを使用して、本来の機能を正確に実行します(つまり、文字列を返しますが、正確にどのくらいの長さですか?-(constchar*)。

の非推奨に関するMSVC警告をシャットダウンするには、次の操作getcwdを実行できます。

#if _WIN32
    #define getcwd _getcwd
#endif // _WIN32
于 2011-01-26T17:44:03.827 に答える
4

このコードは、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());
}
于 2019-04-26T13:03:56.040 に答える