为什么我的程序在向MAP插入值时会停止?

时间:2013-08-30 16:01:36

标签: c++ file map coding-style fstream

我尝试将文件读入地图但程序停在文件中间。 该文件由数百万行组成,每行是由数字和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万。

有人能告诉我为什么会这样吗? 任何帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

在内存中始终建议***not to read entire file***,因为文件大小可能会从小的kbs变为更大的Mbs。

最好以块的形式读取,每次从文件中读取时,只需几个固定的千字节(比如4092)就可以进行处理并关闭它。