所以我试着写一个程序来读取一个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;
}
}
出于某种原因,每当我运行它时,我每次都会生成相同的记录,当我尝试调用我的数组时,我没有得到用户名输出和另一个数组中的记录数大小或大量出现,或零。有什么想法吗?
答案 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条记录。