2

それは私ですか、またはboost::filesystem::path::make_preferredは「\」を「/」に変換しませんか?

davidan@kempt:~/Documents/prog/work!$ ../practice/./path_info c:\pitou foo/bar\baa.txt
構成パス:
cout << ------------ -: "c:pitou/foo/bar\baa.txt"
make_preferred()----------: "c:pitou/foo/bar\baa.txt"

むしろ期待してた

c:\pitou\foo\bar\baa.txt

窓と

/pitou/foo/bar/baa.txt

(またはそれに近いもの)POSIX

ソースはここにあります: boost::filesystem チュートリアル

4

3 に答える 3

3

Linux で処理されない理由は、ここでうまく説明されています。

http://theboostcplibraries.com/boost.filesystem-paths

見積もり:

例 35.5 を Linux で実行すると、返される値が異なります。"C:\Windows\System" を返す relative_path() と filename() を除いて、ほとんどのメンバー関数は空の文字列を返します。これは、Linux では文字列「C:\Windows\System」がファイル名として解釈されることを意味します。これは、パスのポータブル エンコーディングでも、Linux 上のプラットフォーム依存のエンコーディングでもないことを考えると理解できます。そのため、Boost.Filesystem はファイル名として解釈するしかありません。

于 2016-06-26T14:59:10.727 に答える