如何在C ++中使用二进制文件附加二进制文件

时间:2014-02-24 14:48:45

标签: c++ iostream binaryfiles

我有两个二进制文件,我想用另一个附加一个。 我该怎么办?

std::ofstream outFile;
outFile.open( "file.bin", ? );

巢线应该是什么?

2 个答案:

答案 0 :(得分:3)

这有一个班轮:

std::ofstream outFile("file.out", std::ios::ate );
std::ifstream inFile( "file.in" );

std::copy( 
    (std::istreambuf_iterator<char>(inFile)),  // (*)
     std::istreambuf_iterator<char>(),
     std::ostreambuf_iterator<char>(outFile)
);

(*)额外的一对括号,以防止将其解析为函数声明。

为了获得更好的性能,您可以使用ifstream::read以块为单位读取文件,并使用ofstream::write进行编写。

答案 1 :(得分:0)

这不是最优化的,但您可以尝试以下方式:

std::ofstream outFile( "file.bin", ios_base::app | ios_base::out );

std::ifstream inFile(source_file_name, ios_base::binary | ios_base::in);
source >> noskipws;
char c;
while (inFile >> c) {
    outFile << c;
}

你可以通过使用更大的缓冲区来提高效率。