|
|
|
#include <iostream>
|
|
|
|
#include <fstream>
|
|
|
|
#include <sstream>
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
std::string slurp(std::ifstream& in) {
|
|
|
|
std::ostringstream sstr;
|
|
|
|
sstr << in.rdbuf();
|
|
|
|
return sstr.str();
|
|
|
|
}
|
|
|
|
|
|
|
|
struct ScoreData{
|
|
|
|
int difficulty;
|
|
|
|
std::string song;
|
|
|
|
int totalEX;
|
|
|
|
int ex1,ex2,ex3;
|
|
|
|
std::string str()const{
|
|
|
|
return "["+std::to_string(difficulty)+"] "+song+": "+std::to_string(totalEX)+" total, "+" EX1: "+std::to_string(ex1)+" EX2: "+std::to_string(ex2)+" EX3: "+std::to_string(ex3);
|
|
|
|
}
|
|
|
|
friend std::ostream&operator<<(std::ostream&os,const ScoreData&data){
|
|
|
|
os<<data.str();
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
std::string GetNext(int&marker,std::string str){
|
|
|
|
int originalMarker=marker;
|
|
|
|
marker=str.find_first_of(',',originalMarker)+1;
|
|
|
|
return str.substr(originalMarker,marker-1);
|
|
|
|
};
|
|
|
|
|
|
|
|
int main(){
|
|
|
|
|
|
|
|
std::vector<ScoreData>dataA,dataB;
|
|
|
|
std::ifstream file("team.csv");
|
|
|
|
std::string line;
|
|
|
|
//First two lines are garbage data.
|
|
|
|
std::getline(file,line);
|
|
|
|
std::getline(file,line);
|
|
|
|
for(int i=0;i<12;i++){
|
|
|
|
std::getline(file,line);
|
|
|
|
int marker=0;
|
|
|
|
dataA.emplace_back(ScoreData{
|
|
|
|
stoi(GetNext(marker,line)),
|
|
|
|
GetNext(marker,line),
|
|
|
|
stoi(GetNext(marker,line)),
|
|
|
|
stoi(GetNext(marker,line)),
|
|
|
|
stoi(GetNext(marker,line)),
|
|
|
|
stoi(GetNext(marker,line))}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
//Two more lines of garbage data.
|
|
|
|
std::getline(file,line);
|
|
|
|
std::getline(file,line);
|
|
|
|
for(int i=0;i<12;i++){
|
|
|
|
std::getline(file,line);
|
|
|
|
int marker=0;
|
|
|
|
dataB.emplace_back(ScoreData{
|
|
|
|
stoi(GetNext(marker,line)),
|
|
|
|
GetNext(marker,line),
|
|
|
|
stoi(GetNext(marker,line)),
|
|
|
|
stoi(GetNext(marker,line)),
|
|
|
|
stoi(GetNext(marker,line)),
|
|
|
|
stoi(GetNext(marker,line))}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
for(auto&list:{dataA,dataB}){
|
|
|
|
for(auto&dat:list){
|
|
|
|
std::cout<<dat<<std::endl;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|