問題タブ [std-filesystem]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Windows で 8.3 エイリアスのパスを返す std::filesystem::temp_directory_path() の動作を変更する方法
Visual Studio 2015 でtemp_directory_path()
の使用:std::experimental::filesystem
出力:
8.3 エイリアスC:/Users/Administrator/AppData/Local/Temp/
の代わりにフル パス名を取得することは可能ですか?
Visual C++ を使用して、 eg inをfs::temp_directory_path()
呼び出します。ただし、その関数のソースは利用できないようです。_Temp_get(wchar_t (&)[_MAX_FILESYS_NAME])
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\filesystem
c++ - boost::filesystem::weakly_relative および std::filesystem::canonical から削除された base パラメータを置き換える方法
関数boost::filesystem::canonical()
( 1.66のドキュメント、現在のリリースのドキュメント) は 2 つの引数を提供します (エラー コードのオーバーロードを無視します) base
。最初の引数は正規化するパスです。2 番目の引数は、最初のパスが相対パスの場合に絶対パスにするために使用されるベース パスです。デフォルトでは、 current_path()がこの引数に使用されます。
Boost 1.60 では、いくつかの新機能が導入されていますboost::filesystem::weakly_canonical()
( 1.66のドキュメント、現在のリリースのドキュメント)。この関数には、この 2 番目の引数がありません。標準化された (C++17) バリアントstd::filesystem::canonical()
とstd::filesystem::weakly_canonical()
( cppreferenceを参照) についても同じことが言えます。
canonical()
と交換したいのですweakly_canonical()
が、第二引数を使いました。それが、この議論が削除されたことに気付いた方法です。なぜそれが削除されたのか、どうすれば自分でパスを絶対にすることができるのか疑問に思っています。
C++17 のこの解決策をほのめかす欠陥レポートを見つけましたが、率直に言って、その根拠はよくわかりません。説明や、ベースのオーバーロードが過剰に指定されている例があれば幸いです。
そしてもちろん、現在のディレクトリではないベースディレクトリを使用して、相対パスを絶対パスに変換する方法を考えています。これが私のターゲット システム (Visual C++ を使用する Windows) で正しい形式であることがわかっているため、 cppreference for でbase / p
示唆されているとおりに使用する必要がありますか?std::filesystem::absolute()