0

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

谁能告诉我为什么会发生这种情况?任何帮助将不胜感激。

4

1 回答 1

0

***not to read entire file***由于文件大小可能从小 kbs 到更大 Mbs 不等,因此总是建议立即在内存中。

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

于 2013-08-30T16:34:26.057 回答