我正在尝试用最少的时间来编写大文本文件。首先,我必须初始化一个空格的文件。我的方法是创建一个250字节的char数组,然后将其复制到文件中。我认为这不是很有效的方法。还有更好的主意吗?
char buff[250];
ofstream ofile;
ofile.open("abc.txt");
for(long int i=0;i<20970;i++)
{
ofile<<buffer;
ofile<<endl;
}
答案 0 :(得分:1)
在Windows中,您可以使用SetEndOfFile创建指定大小的文件。在Linux中它是ftruncate。
还要确保在写入时优化缓冲区大小。最佳缓冲区大小取决于系统内部,例如页面大小。但在大多数情况下(如果它不是嵌入式系统),4-128kb是一个很好的大小。
答案 1 :(得分:1)
您可以搜索文件的末尾并写一个字符:
#include <fstream>
using namespace std;
int main(int argc,char** argv) {
ofstream o("file") ;
o.seekp(100 * 1024 * 1024);
o << '\0';
return 0;
}
仅在事先知道结果文件的大小时才有效。