名前空間
変種
操作

std::filesystem::current_path

From cppreference.com
 
 
 
ヘッダー <filesystem> で定義
path current_path();
(1) (C++17以降)
path current_path( std::error_code& ec );
(2) (C++17以降)
void current_path( const std::filesystem::path& p );
(3) (C++17以降)
void current_path( const std::filesystem::path& p,
                   std::error_code& ec ) noexcept;
(4) (C++17以降)

現在のパスを返したり変更したりします。

1,2) 現在のワーキングディレクトリの絶対パスを返します。これは、(ネイティブ形式で) POSIXの getcwd を使って取得したかのように動作します。 (2) エラーが発生した場合は path() を返します。
3,4) 現在のワーキングディレクトリを p に変更します。これは、POSIXの chdir を使って変更したかのように動作します。

目次

[編集] パラメータ

p - 現在のワーキングディレクトリを変更するパス
エラーコード - 例外を投げないオーバーロードでのエラー報告用アウトパラメータ

[編集] 戻り値

1,2) 現在のワーキングディレクトリを返します。
3,4) (なし)

[編集] 例外

noexcept とマークされていないオーバーロードは、メモリ割り当てが失敗した場合に std::bad_alloc をスローする可能性があります。

1) 基盤となるOS APIエラーが発生した場合、 std::filesystem::filesystem_error をスローします。この例外は、OSエラーコードをエラーコード引数として構築されます。
2) OS API呼び出しが失敗した場合、std::error_code& パラメータにOS APIのエラーコードが設定されます。エラーが発生しなかった場合は、ec.clear() が実行されます。
3) 基盤となるOS APIエラーが発生した場合、 std::filesystem::filesystem_error をスローします。この例外は、最初のパス引数として p、エラーコード引数としてOSエラーコードを渡して構築されます。
4) OS APIの呼び出しが失敗した場合、 std::error_code& パラメータにOS APIのエラーコードを設定し、エラーが発生しなかった場合は ec.clear() を実行します。

[編集] 注釈

現在のワーキングディレクトリとは、プロセスに関連付けられており、相対パスのパス名解決の開始場所として使用されるディレクトリのことです。

多くのオペレーティングシステムで返される現在のパスは、危険なグローバル変数です。サードパーティ製またはシステムライブラリの関数、あるいは別のスレッドによって予期せず変更される可能性があります。

[編集]

#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
 
int main()
{
    std::cout << "Current path is " << fs::current_path() << '\n'; // (1)
    fs::current_path(fs::temp_directory_path()); // (3)
    std::cout << "Current path is " << fs::current_path() << '\n';
}

実行結果の例

Current path is "D:/local/ConsoleApplication1"
Current path is "E:/Temp"

[編集] 関連項目

一時ファイルに適したディレクトリを返す
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)