次のような 200 行のテキスト ファイルがあります。
1 4:48:08 Orvar Steingrimsson 1979 30 - 39 ara IS200
2 4:52:25 Gudni Pall Palsson 1987 18 - 29 ara IS870
私のコードは、上記の例のように時間ではなく、各競技者の生年でこれらの行を並べ替えます。したがって、行は次のようにソートされます: (より多くの行のみ)
2 4:52:25 Gudni Pall Palsson 1987 18 - 29 ara IS870
1 4:48:08 Orvar Steingrimsson 1979 30 - 39 ara IS200
私の質問は、年 - 名前 - 時間の 3 つの項目をリストする方法を教えてください。これらの 2 行は次のようになります。
1987 Gudni Pall Palsson 4:52:25
1979 Orvar Steingrimsson 4:48:08
これまでのところ、行を正しい順序でソートする私のコード:
#include <iostream> //for basic functions
#include <fstream> //for basic file operations
#include <string> //for string operations
#include <map> //for multimap functions
using namespace std;
int main ()
{
ifstream in("laugavegurinn.txt", ios::in);
ofstream out("laugavegurinn2.txt");
string str;
multimap<int, string> datayear; //creates multimap linking each line to year
in.ignore(80);//ignores header of the file - 80 characters - to escape problems with while loop
// while (getline(in,str)) {
// string name = str.substr(18,30);
// string time = str.substr(8,7);
//}
while (getline(in,str)) {
int year = stoi(str.substr(54, 4));
datayear.insert(make_pair(year,str)); //insert function and pairs year and string
}
for (auto v : datayear)
out << v.second << "\n";
in.close();
out.close();
}