0

次の例でBoostFilesystemのcreatedirectory(およびcreatedirectories)関数を使用する場合、「/」は「\」に置き換えられます。

boost::filesystem::path path ("/data/configSet");
boost::filesystem::create_directory(path);

このコードを切り取って、「data」内に「configSet」のサブディレクトリを作成する代わりに、「data\configSet」というディレクトリを作成します。createdirectories();を使用しても同じ問題が発生します。

この問題は、コードがWindowsシステムで実行されている場合には発生しません。私は現在、Ubuntu9.10を使用してLinuxでテストしています

4

1 に答える 1

3

何らかの理由でboost::filesystemは、ユーザーがLinuxではなくWindowsを使用していると見なしているため、Windowsスタイルのパス名(\で区切られている)を使用しているようです。Boostを構築する方法と、ヘッダーを含める方法について、もう少し情報を投稿できますか?LinuxでWindows版のBoostを構築しているのでしょうか。

編集:私はできるだけあなたに近い構成で自分自身を設定しようとしました。Ubuntu 9.10、libboost1.40-all-devがインストールされています。次のプログラムをコンパイルして実行すると、期待どおりに動作し、でという名前のディレクトリが作成さconfigSet/dataます。

#include <boost/filesystem.hpp>

int main() {
  boost::filesystem::path p("/data/configSet");
  boost::filesystem::create_directory(p);

  return 0;
}

次のコマンドを使用して、そのプログラムをコンパイルして実行してみて、異なる結果が得られるかどうかを確認できますか?

$ g++ -o boost-filesystem -lboost_filesystem boost-filesystem.cpp
$ ./boost-filesystem
于 2009-12-25T00:01:38.740 に答える