Чтение текстового файла с разделителями-запятыми в массив

Я пытаюсь написать программу на C ++, которая имитирует систему зачисления в колледж, где студент вводит свой идентификатор, и программа ищет текстовый файл для получения информации и загружает структуру на основе текстового файла. Я дошел до того, что у меня возникли проблемы с получением их зарегистрированных курсов в массиве структуры. Используя функцию getline, используя ',' в качестве разделителя, также перенесет следующую строку до следующей запятой. Какой будет правильный алгоритм для этого?

Это настройка файла, которая содержитне настоящие информация о студентах:

918273645, Стив, Олбрайт, ITCS2530, MATH210, ENG140123456789, Ким Мерфи, ITCS2530, MATH101213456789, Дин, Bowers, ITCS2530, ENG140219834765, Джерри Кларк, MGMT201, MATH210

(Пули добавлены для макета; не в файле)

Например, пользователь вводит «123456789» для своего идентификатора, и затем читается информация Ким Мерфи. После первой итерации getline «ITCS2530» считывается и помещается в переменную, а затем загружается в структуру; нет проблем там. Однако последний курс в списке имеет символ новой строки перед следующей запятой, поэтому следующая итерация читает «MATH101 / nl213456789» и помещает всю строку в переменную и пытается загрузить ее в структуру.

В первом столбце указывается их идентификатор, затем имя, фамилия, а затем уже записанные курсы. Обратите внимание, что количество зарегистрированных курсов может варьироваться.

Вот код, над которым я сейчас работаю:

    student login()
{
    string ID;
    student newStudent;
    string enrolled;
    int i = 0;
    while (true)
    {
        cout << "Enter Student ID: ";
        cin >> newStudent.ID;
        cout << endl;
        if (newStudent.ID.length() == 9)
            break;
        else
            cout << "That ID is invalid - IDs are 9 digits" << endl;
    }
    ifstream inFile;
    ofstream outFile;
    inFile.open("registration.txt");
    if (inFile.is_open())                                                               
    //Check if file is open
    {
        while (!inFile.eof())                                                           
        //While not at end of file
        {
            getline(inFile, ID, ',');                                                   
            //Search for ID
            if (ID == newStudent.ID)
            {
                getline(inFile, newStudent.fName, ',');                                         
                //Assign fName and lName
                getline(inFile, newStudent.lName, ','); 

                while (enrolled != "\n")
                {
                    getline(inFile, enrolled, ',');
                    if (enrolled == "\n")
                    {
                        cout << "Not currently enrolled in a class." << endl;
                    }
                    else
                    {
                        newStudent.courses[i] = enrolled;
                        i++;
                    }
                }
                    cout << newStudent.lName << ", Welcome to the MCC Enrollment System!" << endl;
                for (i = 0; i <= NUM_OF_COURSES; i++)
                {
                    cout << "Enrolled courses: " << newStudent.courses[i] << endl;
                }

                    cout << endl;
                    break;
                    //Stops searching
            }
            else                                                                        
                //Ignores rest of line - used to skip to the next line
            {
                getline(inFile, ID, '\n');
            }
            if (inFile.eof())                                                           
                //If ID was not found
            {
                inFile.close();
                cout << "Enter First Name: ";                                           
                //Begin entry of new student
                cin >> newStudent.fName;
                cout << endl;
                cout << "Enter Last Name: ";
                cin >> newStudent.lName;

                cout << endl;
                outFile.open("registration.txt", ios::app);
                if (outFile.is_open())
                {
                    outFile << newStudent.ID << "," << newStudent.fName << "," << newStudent.lName << "\n";
                }
            }
        }
    }
    return newStudent;
}

Заранее благодарю за любую помощь.

Ответы на вопрос(2)

Ваш ответ на вопрос