我尝试将文件读入地图但程序停在文件中间。 该文件由数百万行组成,每行是由数字和INT组成的STRING。 例如1230981237120313 123。
#include<map>
#include<iostream>
#include<fstream>
void main ()
{
ifstream mapfile("filename.txt",ifstream::in);
int itemp;
string stemp;
map<string,int> mapping;
while(mapfile>>stemp>>itemp)
{
mapping[stemp]=itemp;
}
}
当它处理包含数百行的小文件时,可以。但当它达到9000多万行时,它会在没有报告任何错误的情况下停止,只需按“按任意键继续...”就停止。
我已经完成了一些分析,我可以确保程序在读取文件中的行并且需要执行mapping[stemp]=itemp
时停止。每次停止时,都会发生在不同的行,但总是大约9000万。
有人能告诉我为什么会这样吗? 任何帮助将受到高度赞赏。
答案 0 :(得分:0)
在内存中始终建议***not to read entire file***
,因为文件大小可能会从小的kbs变为更大的Mbs。
最好以块的形式读取,每次从文件中读取时,只需几个固定的千字节(比如4092)就可以进行处理并关闭它。