qq_32090449 2017-11-01 12:46 采纳率: 0%
浏览 874

c++ 读一个几百行的文本文件时运行会出错

当test.txt只有十几行文本时运行正常
当文件有几百行后就会出错

 #include <iostream>
#include <unordered_map>
#include <vector>
#include <cctype>
#include <fstream>
#include <string>
#include <iterator>
#include <sstream>
#include <cstring>
#include <algorithm>
#include <iomanip>
using namespace std;
void count(unordered_map<string, int> &m, int &sum){
    ifstream fin("test.txt");
    string line;
    while(1){
        getline(fin, line);
        if(fin.eof())  break;
        istringstream ss(line);
        string text, word;
        while(1){
            ss >> text;
            if(ss.eof()) break;
            remove_copy_if(text.begin(), text.end(), back_inserter(word), [](const char &c){ return !isalpha(c); });
            for(int i = 0; i < word.size() - 1; ++i){
                char ch1 = toupper(word[i]), ch2 = toupper(word[i + 1]);
                string s({ch1, ch2});
                if(m.find(s) == m.end()) m[s] = 1;
                else                     ++m[s];
                ++sum;
            }
            word.clear();
        }
    }
    fin.close();
}
int main(){
    unordered_map<string, int> alphabet_freq;
    int sum = 1;
    count(alphabet_freq, sum);   //统计频率
    vector<pair<string, double>> v;  // 将关联容器数据存储于顺序容器排序
    for(auto it = alphabet_freq.cbegin(); it != alphabet_freq.cend(); ++it){
        v.push_back(make_pair(it->first, double(it->second) / sum));
    }
    //按second降序
    sort(v.begin(), v.end(), [](const pair<string, double> &lhs, const pair<string, double> &rhs){
        return lhs.second > rhs.second; });
    for(auto it = v.cbegin(); it != v.cend(); ++it){
        if(it->second < 0.01) continue;
        cout << it->first << " : " << it->second <<endl;
    }
    return 0;
}

  • 写回答

1条回答

  • AlbertS 博客专家认证 2017-11-04 03:53
    关注

    你最好把错误也贴出来,直接看代码找问题太浪费时间了

    评论

报告相同问题?

悬赏问题

  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决