私は、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
。