私は、Windowsパスを調べて操作する必要のあるクロスプラットフォームアプリケーションを作成しています。Windowsパスを操作するためのクロスプラットフォームライブラリですか?
具体的には、私が今いる特定の問題については、パスが絶対的であるか相対的であるかを知る必要があります。
現在のコードはもちろん、Windows上で魔法のように動作boost::filesystem::path
を使用しています:ネイティブや携帯:このアプローチの
boost::filesystem::path the_path(the_path_as_a_string);
if (!the_path.has_root_path()) { /* do stuff */ }
問題はboost::filesystem::path
は2つのモードのみを有することです。これは、LinuxでコンパイルするとWindowsのパス文法が利用できないことを意味します(ソースでは#ifdef
が編集されています)。したがって、パス "C:\ path"はWindowsでは絶対パスとみなされますが、Linuxでは相対パスとみなされます。
Windowsパスを検査して操作できるクロスプラットフォームのC++ライブラリをお勧めしますか?
今のところWindowsパス操作は、パスが絶対パスかどうかを確認することです。
私が絶対パスに使用する基準は、両方ともドライブレターを含み、パスは\
で始まるということです。この基準の下の絶対パスの例はC:\path
です。これらは両方とも、この基準の下での相対パスの例です:C:path
、\path
。
この区別は白黒ではないことにご注意ください。有効なパス 'C:foo.txt'を考えてみましょう。 C:ドライブ_の現在の作業ディレクトリ_を使用します。 – MSalters
MSalters:私は質問した時点でそれについて考えなかった。また、私が維持しようとしているコードの元の作家はそれを考えていなかったようです。今私は実際にどのような振る舞いが望まれているのかを見つけなければなりません。 –