Считывание и вывод определённой информации из файла

Мне нужно вывести информацию про баскетболистов, которые заработали больше 150 очков (это значение после предпоследней точки с запятой в каждой строчке) При этом условии вывести надо будет первую и последнюю строчку

Ibrahimovic;Ivan;Petrovich;male;Swede;83;195;27,11,1923;8800;Manchester United;7;forward;1150;378

так как 1150 > 150

Zhitkov;Valery;Evgenich;male;Ukrainian;83;195;30,27,1983;7700;dynamo;9;defender;190;78

190 > 150

Вот скрин всего файла введите сюда описание изображения Я реализовал только построчное считывание, разделение по ";" и вывод всего. Помогите пожалуйста сделать так, чтобы выводились только те баскетболисты , которые набрали больше 150 очков и может быть знаете как улучшить код для разделения строки по ";"

#include <iostream>
#include <string>
#include <fstream> 

using namespace std; 

int main() {

    string s; 
    ifstream file("C:\\Stuff\\info.txt"); 

    while (getline(file, s)) { 
        cout << s << endl;
        string delimiter = ";";

        size_t pos = 0;
        string token;
        while ((pos = s.find(delimiter)) != string::npos) {
            token = s.substr(0, pos);
            std::cout << token << std::endl;
            s.erase(0, pos + delimiter.length());
        }
        cout << s << endl;
        
    }

    file.close(); 

    return 0;
}

Ответы (2 шт):

Автор решения: Bogdan

Для этой задачи было бы неплохо объявить класс, например, Player, хранящий информацию о игроке.

class Player
{
public:
    // парсит целую строку и инициализирует поля
    Player(const string &input);

    // далее методы получения полей (остальные опущены для упрощения)

    string get_name() const;
    size_t get_scores() const;
};

Список игроков удобно было бы представить вектором:

vector<Player> players;

Тогда чтение данных из файла выглядело бы примерно так:

while (getline(file, s)) { 
    players.emplace_back(s);
}

Теперь можно организовать поиск примерно так:

for (const auto &player: players) {
    if (player.get_scores() > 150) {
        // делаем то, что нужно с игроками, у кого очков больше чем 150
    }
}
→ Ссылка
Автор решения: Павел Ериков

Вот пример кода с комментариями и без ООП:

string s;
ifstream file("D:\\info.txt");
string token;

while (getline(file, s)) {
    int index = 0;
    int start = s.size() - 1;
    int finish;
    //Найдем в строке начало и конец очков
    for (; start >= 0; --start) {
        if (s[start] == ';')
            ++index;
        if (index == 1)
            finish = start;
        if (index == 2)
            break;
    }
    //Обрежем строчку для удобства (хотя можно и от этого избавится)
    token = s.substr(++start, s.size());
    //И просто сравним
    if (atoi(s.c_str() + finish) > 150)
        cout << s << endl;
}

file.close();
→ Ссылка