我有两个二进制文件,想要将它们合并起来。如何操作呢?
std::ofstream outFile;
outFile.open( "file.bin", ? );
下一行应该是什么?
我有两个二进制文件,想要将它们合并起来。如何操作呢?
std::ofstream outFile;
outFile.open( "file.bin", ? );
下一行应该是什么?
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
写入它们。
ios::app
打开吗? - Martin J.ate
,app
,这并不重要,因为我们在写入之间不会寻找。 - jrokstreambuf
迭代器时不需要,我会再确认一下。 - jrokoutFile << inFile.rdbuf()
。 - David G这不是最优解,但你可以尝试类似的方法:
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;
}
你可以使用更大的缓存区来提高效率。