重複の可能性:
健全で安全かつ効率的な方法でファイルをコピーする
同様のトピックを検索しましたが、大きなバイナリ ファイルの答えが見つかりませんでした。非常に大きなバイナリ ファイル (それぞれ ~10 または ~100 GB など) があることを考慮して、標準 C++ (POSIX 関数なし) を使用して、次の関数でそれらをコピーするにはどうすればよいですか。
bool copy(const std::string& oldName, const std::string& newName)
{
/* SOMETHING */
}
EDIT:次の実装は大丈夫ですか?(コメントのリンクから適応)
bool copy(const std::string& oldName, const std::string& newName)
{
bool ok = false;
std::ifstream oldStream(oldName.c_str(), std::ios::binary);
std::ofstream newStream(newName.c_str(), std::ios::binary);
if (oldStream.is_open() && newStream.is_open()) {
newStream << oldStream.rdbuf();
ok = (oldStream.good() && newStream.good());
}
return ok;
}