次の 4 つの例のような 200 行のテキスト ファイルを読み込もうとしています。
1 4:48:08 Orvar Steingrimsson 1979 30 - 39 ara IS200
2 4:52:25 Gudni Pall Palsson 1987 18 - 29 ara IS870
3 5:14:24 Ryan Paavola 1984 18 - 29 ara USA
4 5:18:43 Hendrik Sporing 1990 18 - 29 ara GER
現在、セリフはご覧のように時間ごとに整理されていますが、各出場者の生年ごとに整理したいので、この場合、これらの 4 つのセリフは次のようになります。
4 5:18:43 Hendrik Sporing 1990 18 - 29 ara GER
2 4:52:25 Gudni Pall Palsson 1987 18 - 29 ara IS870
3 5:14:24 Ryan Paavola 1984 18 - 29 ara USA
1 4:48:08 Orvar Steingrimsson 1979 30 - 39 ara IS200
生年順に行を並べ替えることになっていて、入力ファイルは「laugavegurinn.txt」、出力ファイルは「laugavegurinn2.txt」です。
誰かが私のコードの問題を指摘したり、これを行うためのより良い方法を提案したりできますか? 注意してください、C ++にあまり熟練していないので、助けていただければ幸いです。これは私のコードです:
#include <iostream> //for basic functions
#include <fstream> //for basic file operations
#include <string> //for string operations
#include <map> //for multimap functions
using namespace std;
void process (istream &in, ostream &out) {
multimap<int, string> data_by_year;
string str;
while (getline(in,str)) {
int year = stoi(str.substr(54, 4));
data_by_year.insert(make_pair(year, str));
}
for (auto v : data_by_year) {
out << v.second << "\n";
}
}
int main () {
ifstream in;
ofstream out;
in.open("laugavegurinn.txt");
out.open("laugavegurinn2.txt");
process(in, out);
}