返回信息流请各位牛人帮帮忙,我有一个100M 以上的中文文本文件要做处理。
用的是getline()分行读入。
编得程序对于200K的还可以运行,能得到正确的完整的结果,但是文本再大了就不能读下去了,请问怎么解决。
我甚至用了最简单的测试程序。
main()
{
char str[1000]
ifstream in("test.txt");
while(in)
{
getline(str,1000);
cout<<str;
}
}
发现还是输出不到文件的最后,到200K左右就不再运行了。
想请教各位高人怎么才能够解决读大文本的问题?谢谢,拜谢。
这是一条镜像帖。来源:北邮人论坛 / cpp / #9157同步于 2008/7/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[求助][在线急等]关于100M以上txt大文件读入
toolong2007
2008/7/4镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
我以前也想过这问题,后来上网查了下,貌似C++的话用CString就可以了,而且用CString还可以方便支持很多字符串的处理,CString貌似可以读2G的文件。。。。。。。
仅仅貌似,你还是百度下吧,我记得在CSDN里面看到过别人讨论过这话题
你用的数组不行,原因估计是因为数组的内存地址是连续的,但你输入的文件过大时,可能后面找不到连续的空间,所以才报错
建议先定义个CString temp, str; 然后用个循环getline每行到temp, 然后str += temp试试
int main()
{
string str;
ifstream in("test.txt");
int n = 0;
while(getline(in, str))
{
// cout << str << endl;
n++;
}
cout << "n = " << n << endl;
return 0;
}