не работает функция заполнения для массива структур

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

#include<Windows.h>
#include<iostream>
#include<fstream>
using namespace std;



int GLOBAL_NUM = 1;



struct userList
{
    int ID = 0, salary = 0;
    string name, job;
};

userList* staff = new userList[GLOBAL_NUM+1];


void staffInput()
{
    for (int i = 0; i < GLOBAL_NUM; i++)
    {
        cout << "Введите табельный номер:\n";
        cin >> staff[i].ID;
        cout << "\nВведите Ф.И.О. :\n";
        cin >> staff[i].name;
        cout << "\nВведите должность:\n";
        cin >> staff[i].job;
        cout << "\nВведите зарплату\n";
        cin >> staff[i].salary;
    };
};



void staffShow()
{
    for (int i = 0; i < GLOBAL_NUM; i++)
    {
        cout << "------------------------" << endl;
        cout << i << '.' << endl;
        cout << "Табельный номер: " << staff[i].ID<< endl;
        cout << "Ф.И.О. : " << staff[i].ID << endl;
        cout << "Должность: " << staff[i].ID << endl;
        cout << "Зарплата: " << staff[i].ID << endl;
        cout << "------------------------" << endl;
    }
}



int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    cout << "введите количество заполняемых сотрудников: ";
    cin >> GLOBAL_NUM;

    staffInput();
    staffShow();
    
    return 0;
}

результат программы:


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

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

Размер int обычно 4 байта, так что нечто больше 3 миллиардов в него не помещается, приводит cin в состояние ошибки и больше вооще из него ничего не читается.

Вы же не проверяете, успешно ли считаны данные... А это стоит делать.

И еще, >> в строку читает одно (прописью: ОДНО) слово, а не строку. Это предупреждая ваш следующий вопрос...

→ Ссылка
Автор решения: Ddd

Функция заполнения-то работает (наверное), но вот функция staffShow() выводит только ID.

→ Ссылка