通过CPP读取CSV中的前10个记录

时间:2016-04-29 15:38:51

标签: c++ arrays csv

所以我试着写一个程序来读取一个CSV文件。该文件包含来自Twitter用户的信息,包括用户名,屏幕名称,ID,链接,记录数。我需要我的程序才能找到推文最多的前5位用户,我的代码如下:

    string screen_name;
    string user_class;
    string user_id;
    string user_link;
    int num_records;

    string str_num_records;

    getline(stream_s, screen_name, ',');
    getline(stream_s, user_class, ',');
    getline(stream_s, user_id, ',');
    getline(stream_s, user_link, ',');
    getline(stream_s, str_num_records);
    string user[5];
    int tweets[5];
    int top20=0;


    int req_recs = 750;
    cout<<"Please be patient as this may take up to 60 seconds"<<endl;

    while (top20<=4){
        if (num_records==req_recs){
            //cout << "records = " << str_num_records << endl;

            stringstream num_records_stream(str_num_records);
            num_records_stream >> num_records;
            cout << "User: "<<screen_name<<" has "<<num_records<<" records"<< endl;
            cout <<"\n\n";
                req_recs-=1;
                top20+=1;
        }
        else{
            req_recs-=1;
        }

    }

出于某种原因,每当我运行它时,我每次都会生成相同的记录,当我尝试调用我的数组时,我没有得到用户名输出和另一个数组中的记录数大小或大量出现,或零。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我建议使用结构来保存字段。让结构代表一个记录。

struct Record
{
    string screen_name;
    string user_class;
    string user_id;
    string user_link;
    unsigned int occurrences;
};

使用这些记录的容器,例如std::vector 从文件中读取记录(直到输入文件出现问题) 在容器中搜索具有相同screen_name的记录 如果存在,请递增occurrences字段。

处理完所有记录后,按occurrences字段的降序对容器进行排序 打印出前5条记录。