1

我正在做一个作业,其中我有一个大文本文件(1gb)。我应该解析这个文本文件并将其存储在树中以进行某些操作。我面临的问题是完全解析整个文件所需的时间。完全解析文件大约需要 40 分钟。谁能在几分钟内告诉我如何有效地做到这一点?我的代码是

int main()
{
FILE * file=fopen("data.txt","r");
char line[1000];
char *token;

while(fgets(line,1000,file)!=NULL) 
{
    token=strtok(line,"     ");
    while(token!=NULL)
    {
        cout<<token<<endl;
        token=strtok(NULL,"     ");
    }
}

fclose(file);
return 0;

}
4

1 回答 1

2

就个人而言,我猜想打印令牌是最大的时间消耗。试试这个,看看它是否运行得更快:

#include <iostream>
#include <fstream>

int main() {
    std::ios_base::sync_with_stdio(false);
    std::ifstream in("data.txt", std::ios_base::binary);
    for (std::string token; in >> token; ) {
        if (++count / 100000 == 0) {
            std::cout << "read " << count << " tokens\n";
        }
    }
    std::cout << "read " << count << " tokens\n";
}
于 2012-12-05T22:42:29.293 回答