2

すべてのプラットフォームのボリューム間でファイルを移動するものを作成しようとしています。現在、rename(...) 関数を使用してファイルを移動していますが、これは Windows のボリューム/ドライブ間でも機能します。ただし、Linux では、(strace を介して) EXDEV エラーが発生し、アプリが強制終了されます :(

system(...) 経由で 'mv' を呼び出す必要があるようですが、これは非常にハックなようです。それ、またはブーストをアプリに統合しますが、これは簡単な操作ではありません。

他に利用できるオプションはありますか?

お時間をいただきありがとうございます。

4

1 に答える 1

1

クロスプラットフォームである必要があり、システム固有の実装に依存しないものを書きたい場合は、標準に固執する必要があります。新しい C++11 標準では、それを支援する追加機能が許可されている可能性がありますが、簡単な解決策は、あるものから別のものへの単純なコピーを実装することfstreamです。

于 2012-05-24T22:08:35.547 に答える