首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-10-17 
请教怎样实现一次I/O写多行文本到文本文件?谢谢原帖如下http://bbs.csdn.net/topics/390583874读取foxpro

请教怎样实现一次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进行操作

热点排行