問題タブ [boost-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++ - boost::filesystem::ユニコードファイルパスのパス?
boost::filesystem::path をユニコードファイルパスで使用する方法はありますか? 特に、std::string の代わりに std::wstring で使用したいと思います。
私は Windows プラットフォームで作業していますが、Unicode 文字を含むファイルパスを処理する必要がある場合があります。
c++ - 上書きを使用してboost::filesystemcopy_fileを実行する方法
Windows API関数には、ターゲットファイルが存在する場合にそれを上書きするかどうかを制御できるCopyFile
引数があります。BOOL bFailIfExists
関数にはそのboost::filesystem
copy_file
ような引数がなく、ターゲットファイルが存在する場合は失敗します。boost copy_file関数を使用してターゲットファイルを上書きするエレガントな方法はありますか?それとも、単にWindows APIを使用する方が良いですか?現在のターゲットプラットフォームはWindowsですが、コードプラットフォームを独立させるために、可能な場合はSTLとブーストを使用することを好みます。
ありがとうございました。
c++ - boost :: filesystem :: examplesは、メディアのないリムーバブルメディアデバイスに対して本当に例外をスローする必要がありますか?
boost :: filesystem::existsを使用しているときに少し奇妙な状況に遭遇しました。準備ができていないか、メディアが入っていないドライブにファイルが存在するかどうかを確認しようとすると、basic_filesystem_errorがスローされます。bfs :: examplesのほとんどすべての使用法に関する限り、ドライブの準備ができていない場合は、ファイルが存在しないことを意味します。
この状態を適切に処理するために、try-catchで呼び出しをラップすることはできますが、少し面倒になり、コードが少し不格好になります。さらに悪いことに、フロー制御にbasic_filesystem_errorの特殊なケースを使用していることを意味します。つまり、その例外の別の理由が発生した場合、それを適切に処理できなくなります。
これが発生する一般的なケースは、ファイルがCDまたはDVDドライブに存在するかどうかを確認しようとした場合です。以前の私のコード:
になる:
私は、既存のコードベースのいたるところにこの変更を加えるという考えにあまり夢中になりません。
try-catchをラップする別の関数を作成し、bfs :: exit呼び出しをそれで置き換えることを検討していますが、try-catchをそのように使用するのが良い考えであることにまだ満足していません。より重要で関連性のある例外的な条件を見逃しているため、私は扉を開いているようです。
関数の非スローバージョンのブーストを再コンパイルできることは承知していますが、それによって例外処理の問題が実際に回避されるとは思いません。
以前にリムーバブルメディアドライブでこの問題に遭遇したことがありますか?もしそうなら、どのようにしてそれを克服しましたか?
c++ - boost :: filesystem :: pathからディレクトリをポップオフする簡単な方法はありますか?
相対パス(例: "foo / bar / baz / quux.xml")があり、サブディレクトリ+ファイル(例: "bar / baz / quux.xml")を持つようにディレクトリをポップしたいと思います。
パスイテレータを使用してこれを行うことはできますが、ドキュメントに欠けているもの、またはよりエレガントなものがあることを期待していました。以下は私が使用したコードです。
出力は次のとおりです。
私が望んでいたのは次のようなものでした。
codepad.orgのテストコードを見ると、branch_path(「foo / bar / baz」を返す)とrelative_path(「foo / bar / baz / quux.xml」を返す)を試しました。
compiler-construction - Boost Filesystem Library Visual C++ コンパイル エラー
Boost Filesystem Library を使用していくつかのサンプル プログラムをコンパイル/実行しようとすると、次の問題が発生します。Visual Studio .NET (2003) で MS-Visual C++ を使用しています。
BoostPro インストーラーを使用して、Boost ライブラリのバージョン 1.38 および 1.39 をインストールしました (バージョンに問題があった場合に備えて)。
含めようとすると/boost/filesystem/operations.hpp
、次のエラーが表示されます。
どんな助けでも大歓迎です。ありがとうございました!
c++ - Snow Leopard に Boost ライブラリをインストールする
ブースト Web サイトの指示に従いました。ブーストディレクトリをパスに入れました。boost ライブラリを使用して C++ プログラムをコンパイルできません。私は特にファイルシステムライブラリを使用しようとしています。どんな助けでも大歓迎です。
--TJB
c++ - Windowsパスを操作するためのクロスプラットフォームライブラリ?
私は、Windowsパスを検査および操作する必要があるクロスプラットフォームアプリケーションを作成しています。
具体的には、私が現在抱えている特定の問題について、パスが絶対的なものか相対的なものかを知る必要があります。
現在のコードはboost::filesystem::path
、もちろんWindowsの魅力のように機能するものを使用しています。
このアプローチの問題は、boost::filesystem::path
ネイティブモードとポータブルモードの2つのモードしかないことです。これは、LinuxでコンパイルするとWindowsパスの文法が使用できないことを意味します(#ifdef
ソースで編集されています)。したがって、パス「C:\ path」は、Windowsでは絶対的と見なされますが、Linuxでは相対的であると見なされます。
Windowsパスを検査および操作できるクロスプラットフォームのC++ライブラリをお勧めしますか?
今のところ、私が行う唯一のWindowsパス操作は、パスが絶対であるかどうかを確認することです。
絶対パスに使用する基準は、両方にドライブ文字が含まれ、パスが。で始まること\
です。この基準の下での絶対パスの例はですC:\path
。これらは両方とも、この基準の下での相対パスの例です:C:path
、\path
。
visual-c++ - boost と Visual Studio 2005 を使用してファイルとフォルダーをコピーするにはどうすればよいですか?
boost::filesystem を使用してファイルとフォルダーをコピーしようとしています (フォルダーをコピーして Windows エクスプローラーに貼り付けるのと同じように)。
boost::filesystemのドキュメントを読んだことがありますが、これを行う方法はまだよくわかりません。
各ディレクトリ (ディレクトリを作成) を再帰的に調べて、それをコピーしている各ファイルを見つける必要がありますか?
さらに、C++/Boost でファイルをどのようにコピーしますか?
PS Boost 1.40.0を使用しています
更新 これに対する回答を作成してしまったのではないかと思いますが、唯一の懸念は、ロックされたファイルとフォルダーをチェックするために try-catch エラーを行わないことです。
次のコードは、相対パス "../example/ecomm" のディレクトリのコピーを作成し、それを存在しないパス "../example/dup_ecomm" に複製します。
私の質問は、ロックされたファイルとディレクトリに関して何をするのを忘れているのですか?
c++ - パスに環境変数を含むファイル名を展開する
展開する最良の方法は何ですか
また
パス文字列をたどらずに環境変数を直接探しますか? wxWidgets にwxExpandEnvVars関数があることがわかりました。この場合、wxWidgets を使用できないので、boost::filesystem と同等または類似のものを見つけたいと思っていました。例としてホーム ディレクトリのみを使用しています。汎用のパス展開を探しています。
c++ - Boost ファイルシステムのコンパイル エラー
boost ファイルシステム ライブラリを利用するコードを書いています。これが私のコードの抜粋です:
種類:
コンパイル エラーが発生します。
このコードは、lame.exe を使用してファイルを mp3 に変換するバッチ スクリプトを出力するプログラムの一部です。これが設計されている音楽ライブラリの形式は次のとおりです。
ルート/アーティスト/曲
また
ルート/アーティスト/アルバム/曲
this->m_input_path はルートへのパスです。
問題に適切に取り組んでいるかどうかはわかりません。もしそうなら、私が得ているエラーをどのように修正しますか?
編集:
私のコードは次のとおりです。
私が今得るエラーは次のとおりです。