如何快速读完文件中的一行,然后删掉文件中的该行,且不要保留空格(行)?
是否有这样现成的函数可以调用?
小弟有个笨的办法:用一个临时文件过渡,先读原文件中的一行,然后把剩下的复制到临时文件中,再把临时文件全部复制回原文件。由于文件很大,有几十万行,故这样的速度太慢。
不知各位达人有什么更好的方法没?
急等!
问题点数:100、回复次数:12Top
1 楼lurel(城市陌生人)回复于 2006-03-01 17:03:22 得分 0
利用TStringList这个类.Top
2 楼lurel(城市陌生人)回复于 2006-03-01 17:30:02 得分 5
下面代码试试
TStringList *lstTmp = new TStringList;
lstTmp->LoadFromFile("c:\\1.txt");
lstTmp->Delete(lstTmp->IndexOf("需要删除的行!"));
lstTmp->SaveToFile("c:\\1.txt");
delete lstTmp;Top
3 楼gRempCH_eNter(龙争四舞)回复于 2006-03-02 08:47:10 得分 0
还有方法吗?Top
4 楼Microsnow(冰火)回复于 2006-03-02 08:50:54 得分 0
我觉得用TStringList就可以比较简单地解决以上这个问题Top
5 楼ribut9225(幽灵庄主)回复于 2006-03-02 09:06:42 得分 0
不错
用TStringList比较简单一点Top
6 楼gRempCH_eNter(龙争四舞)回复于 2006-03-02 09:17:07 得分 0
速度怎么样呢?
Top
7 楼gRempCH_eNter(龙争四舞)回复于 2006-03-02 09:32:05 得分 0
我试了一下,这种方法的速度太慢,达不到我的要求。Top
8 楼foxyz(如风)回复于 2006-03-02 09:37:21 得分 10
TStringList 或者先把文件整个读入内存,或者剪贴板!
然后处理!Top
9 楼lurel(城市陌生人)回复于 2006-03-02 10:12:56 得分 5
要不就只能用做基本的fopen,fseek,fwrite这样的标准C操作了.Top
10 楼jone7319(舍我其谁)回复于 2006-03-02 12:01:43 得分 0
用文件流试试:
读:ifstream f1("....");
f1>>........
写:ofstream f2("......");
f2<<........Top
11 楼oldtab(汇铁)回复于 2006-03-02 12:46:27 得分 80
>如何快速读完文件中的一行,然后删掉文件中的该行,且不要保留空格(行)?
你的办法不好。
有读原文件,写临时文件。再是读临时文件,写原文件。
你应该定义出一个内存块。
读入要原文件。在内存中删除要删除的问题。
移动一下写位置,即直接写回原文件。
再读写下一块数据。直到完成。
显然,时间应该减半。
Top
12 楼xjq2003(xjq2003)回复于 2006-03-02 14:01:22 得分 0
基本的fopen,fseek,fwrite速度比较快Top




