Namespaces
Variants

std::filesystem:: current_path

From cppreference.net
ヘッダーで定義 <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 - 現在の作業ディレクトリを変更するパス
ec - 例外を投げないオーバーロードにおけるエラー報告用出力パラメータ

戻り値

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"

関連項目

一時ファイルに適したディレクトリを返す
(関数)