5

私は、Windowsパスを検査および操作する必要があるクロスプラットフォームアプリケーションを作成しています。

具体的には、私が現在抱えている特定の問題について、パスが絶対的なものか相対的なものかを知る必要があります。

現在のコードはboost::filesystem::path、もちろんWindowsの魅力のように機能するものを使用しています。

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

4

3 に答える 3

2

このためのライブラリを見つけるのは難しいようです。1つの可能性はPathIsRelativeWinelibにありますが、私はWinelibを使用したくありません。

私はこの小さなことを決めるためだけに非常に具体的な解決策をとることになりました。パスが正しいと仮定すると(私の場合は公正な仮定)、絶対パスにはが含まれますが:\、相対パスには含まれません。

したがって、悪いが機能している解決策は次のとおりです。適切なライブラリがありません。の存在を確認してください:\

于 2009-12-04T15:54:55.783 に答える
1

QFileInfoを使用したQTはどうですか?

于 2009-12-04T11:56:02.477 に答える
0

プログラムがLinux上のWindowsパスで何をするのかについて詳しく教えてください。

おそらく、Windowsパス文字列に単純な変換を適用し、構文的にUnixパスに変換してから、boost::filesystemを使用して操作するだけで十分です。

于 2009-12-04T21:52:59.490 に答える