读书人

请问怎样实现一次I/O写多行文本到文本

发布时间: 2013-10-17 17:26:17 作者: rapoo

请教怎样实现一次I/O写多行文本到文本文件?谢谢
原帖如下
http://bbs.csdn.net/topics/390583874
读取foxpro的DBF文件,我希望攒够2000行(也就是2000条记录)
先在内存里保存,当积累到2000条记录的时候,才写一次文件,也就是每次写2000行
然后清掉buffer里的2000行,再次积累到2000行的时候,写一次文件
最后一次写文件,可能不是2000行,比如一个DBF文件有5000行,会写3次,2000,2000,1000
类似于java的bufferwriter,不知道C++怎么实现?
谢谢
[解决办法]
1、用malloc/free管理你的buffer;
2、用fopen/fclose/fread/fwrite操作文件;
3、其中fwrite可以一次性把buffer中的数据写入文件。

引用:
原帖如下
http://bbs.csdn.net/topics/390583874
读取foxpro的DBF文件,我希望攒够2000行(也就是2000条记录)
先在内存里保存,当积累到2000条记录的时候,才写一次文件,也就是每次写2000行
然后清掉buffer里的2000行,再次积累到2000行的时候,写一次文件
最后一次写文件,可能不是2000行,比如一个DBF文件有5000行,会写3次,2000,2000,1000
类似于java的bufferwriter,不知道C++怎么实现?
谢谢

[解决办法]
就和一般的保存的buffer写文件差不多吧!
只不过这里最好malloc来创建buffer空间,用栈空间不太好,太大!
读DBF文件的时候判断下结尾,没到就读2000行到buffer写如新文件,
然后清空buffer继续读DBF文件,循环,结尾读完关闭文件就好了!
[解决办法]


std::string buffer;
std::ifstream infile("eee.dbf");
size_t lines = 0;
while(std::getline(infile, buffer)){
++lines;
if(lines == 2000){
break;
}
}

std::ofstream outfile;
outfile.write(buffer.c_str(), buffer.size();


要点大概就这样吧,我想不会太困难
如果你知道一行有多少个char的话
可以选择一次把2000行的资料都读进来

I/O操作要快的其中一个要诀是尽量不要对I/O进行操作

读书人网 >C++

热点推荐