問題タブ [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++ - C++: Boost: ディレクトリ ナビゲーション ロジックのヘルプが必要
そのため、ディレクトリを変更してファイルを保存し、以前のディレクトリに戻そうとしています。
基本的に:
これが私がこれまでに持っているコードです:
現在、メソッドが呼び出されるたびに、これが起こっています:
フォルダーが存在しません: 作成されます
フォルダーが存在しません: 作成されます
それは役割を果たしていませんcd ../
。=(
したがって、私のディレクトリ構造は次のようになります。
フォルダ名
- フォルダ名
-- フォルダ名
--- フォルダ名
c++ - パスを含むマップを持っている場合、タムを特定のパスと比較する方法はありますか?
name:location(絶対ロケーションパスa la usr/myfolder/
)のような文字列ペアへのブーストパスのマップがあります。私たちはいくつかの場所で与えられusr/myfolder/mysubfolder/myfile
ます。どのマップの場所が特定のURLに最も適合するかを見つける方法は?
例:必要に応じて頼ることができるような地図があります。
価値myfolder/mysubfolder/myfile/blablabla/
(パス)が与えられます。マップ内のどのアイテムに最も関連しているかを調べたいと思います。検索結果はservice4
、最も関連性の高いコンテンツを含むマップアイテムとして表示されます。
では、与えられた文字列値によって、それが最も関連するマップ要素を見つける方法は?
したがって、元の質問は一般的な文字列の場合に関するものでしたが、再構成があったため、ブーストパスで作業するだけではありません。
c++ - iostream のエラー メッセージの改善
特定のアーカイブ形式を(およびヒューズマウントを介して)抽出できる小さなプログラムを実装しました。を使用boost::filesystem::ifstream
していますが、エラーが発生した場合 (たとえば、ユーザーが抽出しようとしているファイルが存在しない場合)、非常にわかりにくいエラー メッセージが表示されます。C++ での IO 関連の問題について、より適切なエラー メッセージを取得する方法はありますか?
関連するメモとして、C を使用するべきだったのFILE*
か、それともヒューズ ファイルシステムの場合は単純なファイル記述子を使用するべきだったのか疑問に思います。strerror(errno)
iostreams が私に与えているものよりもはるかに優れているからです。
c++ - Boost.Filesystemがクラッシュする
誰かがこの問題を抱えていましたか?recursive_directory_iteratorでパーティションを検索するときに、最後に到達するとクラッシュします。
これは、ブースト1.39のVisual Studio 2008で取得しますが、自宅でもブースト1.46のMinGWを使用して取得します。私は何か間違ったことをしているとは思わない:
編集:
最後にはクラッシュしませんが、システムボリューム情報に達したときにクラッシュすることがわかります
c++ - directory_iterator - 「巻き戻し」にコピーを作成しますか?
そこで、Boost Filesystem を試すための小さなプログラムを作成しました。私のプログラムは、現在のパスにあるファイルの数とファイル名を書き込みます。これが私のプログラムです:
存在するファイルは、program.exe、.ilk、および .pdb
ですが、次の出力が得られます (簡潔にするためにパス全体を省略しています)。
$ program.exe
ファイルの総数: 3
[..]/program.pdb
アサーションに失敗しました: m_imp->m_handle != 0 && 「内部プログラム エラー」、ファイル c:\program files\boost\boost_1_44\boost\filesystem\ v2\operations.hpp、1001 行目
代わりに新しい directory_iterator を実行すると、正常に動作します。
directory_iterators に関連する同様の質問に気付きましたが、それらが何を参照しているのか、それとも同じ問題なのかわかりません。
質問: startiterator を保存して、それを使用して iterator を巻き戻すことができないのはなぜですか?
c++ - BOOST_FILESYSTEM_VERSION 2 path.native_file_string() の BOOST_FILESYSTEM_VERSION 3 アナログとは何ですか?
path.native_file_string()
だから私は私の古いプロジェクトを移植しようとしています(ブースト1.44から1.61へ)boost::filesystem v3...
では、アナログとpath.native_file_string()
はboost::filesystem v3
何ですか?(v2 はもう使いたくないのですが、native_file_string などの機能が必要です)
c++ - Boost.Filesystem を共有ライブラリに静的にリンクする際の問題
GCC 4.5.2
とBoost 1.46.1
(でコンパイル) を使用して共有ライブラリを構築して--build-type=complete
います。これは、リンケージ部分を実行する Makefile からのコマンドです。
すべてが正常にコンパイルされますが、アプリケーションによってロードされると次のエラーが発生します。
ldd
出力:
これは、Boostを静的にリンクしたことを意味すると思います。
これはnm crashdetect.so -u | grep boost
言うことです:
したがって、そのシンボルはこのリストの最初にあるので、おそらくそれについて特別なことは何もないと思います.
何か不足していますか?
編集: これは不可能ですか、それとも何ですか?
c++ - このような理論的にクロスプラットフォームのコードが Windows の環境変数を変更しないのはなぜですか?
だから私は次のコードを試します:
コードの何が問題になっていますか? 環境変数が設定されないのはなぜですか? また、エラーが表示されないのはなぜですか? ( WIN コードはこれに基づいています。 )
c++ - Visual Studio 2008 から Visual Studio 2010 に切り替えましたが、現在ファイルシステムを強化するためにリンクできません
Visual Studio 2008 から Visual Studio 2010 に切り替えたところ、プロジェクトの 1 つでリンカー エラーが発生しています。
リンク: 致命的なエラー LNK1104: ファイル 'libboost_filesystem-vc90-mt-gd-1_46_1.lib' を開けません
ブーストをリビルドしたところ、lib フォルダーに vc10 ライブラリが表示されましたが、まだ vc90 ライブラリを参照している理由/方法がわかりません。リンカーのプロパティを確認しましたが、正しいフォルダー (つまり、vc10 ライブラリのフォルダー) を指しています。入力セクションでは、ライブラリを指定していないため、vc90 ライブラリへの参照をどのように取得したかはわかりません。
この問題の解決策を知っている人はいますか?
アップデート
ブーストをビルドするために使用したビルド コマンドは次のとおりです。
bjam --build-dir=c:\boost --build-type=complete --with-filesystem --toolset=msvc address-model=64 ステージ
自動的に次の出力が得られました(とりわけ):
stage\lib\boost_filesystem-vc100-mt-1_46_1.lib
コマンドライン
リンカ:
/OUT:"bin\x64\Debug\NEST2.dll" /INCREMENTAL /NOLOGO /LIBPATH:"C:\Users\USER\Desktop\sandbox\boost_1_46_1\bin\x64\lib" /LIBPATH:"C:\Users\ USER\Desktop\sandbox\db-5.1.25\build_windows\x64\Release" /DLL "ws2_32.lib" "advapi32.lib" "libdb51.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MANIFEST /ManifestFile:"tmp\x64\ Debug\NEST2.dll.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\dev\app\NEST2\bin\x64\Debug\NEST2. pdb" /ASSEMBLYDEBUG /SUBSYSTEM:WINDOWS /PGD:"C:\dev\app\NEST2\bin\x64\Debug\NEST2.pgd" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X64 /ERRORREPORT:QUEUE
コンパイラ:
/I"C:\Users\USER\Desktop\sandbox\boost_1_46_1" /I"C:\Users\USER\Desktop\sandbox\db-5.1.25\build_windows" /Zi /nologo /W3 /WX- /Od / Ot /D "WIN32" /D "_WIN64" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "NEST2_EXPORTS" /D "_HAS_ITERATOR_DEBUGGING=0" /D "__SECURE _SCL=0" /D "_WINDLL " /D "_UNICODE" /D "UNICODE" /Gm- /EHsc /MDd /GS /fp:正確な /Zc:wchar_t /Zc:forScope /Fp"tmp\x64\Debug\NEST2.pch" /Fa"tmp\ x64\Debug\" /Fo"tmp\x64\Debug\" /Fd"tmp\x64\Debug\vc100.pdb" /Gd /errorReport:queue
アップデート 2.0
間違ったライブラリを参照している理由を突き止めることができれば!
c++ - ワイド文字列でboost::iostreams::mapped_file_sourceを使用する
次のように、mapped_file_source(ブースト1.46.1)を狭い文字列でインスタンス化した場合、問題はありません。
ただし、幅の広い文字列を使用しようとすると、次のようになります。
VC2010SP1で次のコンパイラエラーが発生します。
代わりに、コンストラクターにboost :: filesystem :: pathを渡そうとすると、次のエラーが発生します。
明らかな何かが欠けているように感じますが、コンパイラが私に何を伝えようとしているのかを理解しようと円を描いて走り回っていますが、迷子になっています。その手のひらから額への瞬間は起こっていないだけです..私が間違っているのは何ですか?
maped_file.hppで定義されているコンストラクターは、次のようになります。
basic_mapped_file_paramsクラスコンストラクターは次のようになります。
テンプレートクラスが次のように定義されている場合:
ヘッダーには、次のような追加のヘルプがあります。
私がこのアプローチを取る場合:
上記と同じC2664エラーが発生します。
コンパイラが問題を教えてくれていることは知っていますが、ヘッダーソースとコメントを見ると、私が達成しようとしていることはサポートされていると思います。間違っているのは私のアプローチだけです。ヘッダーファイルが私に言っていることを誤解していますか?ここのどこかに、テンプレートのインスタンス化と明示的/暗黙的な変換についての良い教訓があることを私は知っています。
興味深いことに、ブーストインストールを1.47.0にアップグレードすると、C2664エラーが解消されたようですが、プライベートメンバーへのアクセスに関するC2248エラーが発生します。