![]() |
1
19
使用缓冲区:
但是学习使用std::copy()逐个字符地完成它要有趣得多。 |
![]() |
2
4
只需“一个缓冲区接一个缓冲区”,以二进制模式复制文件并读/写X字节长的部分。我认为最快的解决方案是使用C语言本身的复制函数或系统调用。
|
![]() |
3
0
如果做得好,逐字节更有效。当然,这不是全部:这取决于你一次复制多少字节。如果按字面意思逐字节复制,则会对每个字节执行I/O调用,结果会比字符串库慢。大多数人只是猜测一个好的缓冲区大小(通常是2048或更大,2的倍数)并使用它。 |
![]() |
4
0
如果逐字或逐行执行,则很难重建原始文件,因为文本文件中嵌入了多种形式的换行符(\r、\n、\r\n)和空格(\p、\f、0x32),您可能会以这种方式丢失它们。 复制文件最有效的方法是使用字节缓冲区。缓冲区越大,复制的效率就越高,只要缓冲区大小不超过硬盘内部缓冲区大小(目前主要是~8mb)。 |
![]() |
5
0
尝试使用C++ IoSokes和STL。
:这可能不适用于所有情况。根据您的具体要求(如普通文件或大型文件)使用/定制。 |
![]() |
6
-2
因此,最好的办法是尽可能少地执行I/O操作。最好两个(一个读,另一个写)。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |