Dobra, udało mi się znaleźć odpowiedź :)
By osiągnąć to co chciałem należy (Przynajmniej według mojego sposobu):
int liczba;
streambuf *p;
p = cin.rdbuf();
Utworzyć jakiegoś inta, po czym zrobić wskaźnik na obiekt klasy streambuf oraz wskazać go na buffer cina który otrzymujemy funkcją cin.rdbuf()
vector<int> liczby;
do
{
cin >> liczba;
liczby.push_back(liczba);
} while (p->in_avail()>1 );
Pętlę wczytującą zrobić tak jak powyżej
Po czym dodać
cin.ignore();
W celu wyczyszczenia bufora obiektu cin.
Cały kod:
int liczba;
streambuf *p;
p = cin.rdbuf();
cout << "avil: " << p->in_avail() << endl;
vector<int> liczby;
do
{
cin >> liczba;
liczby.push_back(liczba);
cout << p->in_avail() << endl;
} while (p->in_avail()>1 );
cin.ignore();
cout << "====" << endl;
cout << liczby.size();
cout << endl << "Liczby: \n";
for (int i = 0; i < liczby.size();i++)
cout << liczby[i] << endl;
cout << "avil: " << p->in_avail() << endl;
system("pause");
Poprawny output wygląda mniej więcej tak :D
avil: 0
1 2 3 4 5
9
7
5
3
1
====
5
Liczby:
1
2
3
4
5
avil: 0
Press any key to continue . . .
Pozdrawiam :)