2

copy_file関数で問題が発生しています。私のプログラムは非常に単純で、テキストファイルをある場所から別の場所にコピーしようとしています。

次のコードは「デバッグエラー」を引き起こします!abort()が呼び出されたためです。

int main()
{
path src_path = "C:\\src.txt";
path dst_path = "C:\\dst.txt";

cout << "src exists = " << exists( src_path ) << endl;  // Prints True
boost::filesystem::copy_file( src_path, dst_path );

return 0;
}

Stackoverflowで他のコードの例を見ると、何が間違っているのかわかりません。ここで明らかな何かが欠けているような気がします。

Boost v1.47をインストールしていて、Visual C++2010を使用しています。

4

2 に答える 2

1

目的のファイルが存在すると推測しています。

ドキュメント:_

template <class Path1, class Path2> void copy_file(const Path1& from_fp, const Path2& to_fp);

Requires :Path1::external_string_typePath2::external_string_typeは同じ型です。

効果: from_fp が解決するファイルの内容と属性が、to_fp が解決するファイルにコピーされます。 スロー: basic_filesystem_error<Path>iffrom_fp.empty() || to_fp.empty() || !exists(from_fp) || !is_regular_file(from_fp) || exists(to_fp)

次のような簡単なテスト:

#include <iostream>
#include <boost/filesystem.hpp>

int main()
{
    using namespace boost::filesystem;
    path src_path = "test.in";
    path dst_path = "test.out";

    std::cout << "src exists = " << std::boolalpha << exists( src_path ) << std::endl;  // Prints true
    try
    {
        boost::filesystem::copy_file( src_path, dst_path );
    } catch (const boost::filesystem::filesystem_error& e)
    {
        std::cerr << "Error: " << e.what() << std::endl;
    }

    return 0;
}

版画:

src exists = true
Error: boost::filesystem::copy_file: File exists: "test.in", "test.out"

2回目の実行で:)

于 2011-11-27T23:35:43.740 に答える
-1

boost::filesystem2 を使用している場合は、boost::filesystem2::copy(src_path,dest_path); にする必要があると思います。copy_file は廃止されるべきでした。

于 2011-11-27T23:33:23.350 に答える