Strumień wejścia, odróżnienie liczb od innych znaków

0

Witam, mam delikatny problem z częścią programu w konsoli. Łapie sobie dane ze strumienia wejścia jeśli to są cyfry zapisuje je do tablicy aż do wprowadzenia jakiegoś innego nie liczbowego znaku, na razie wymyśliłem coś takiego ale potrzebuje 2 dodatkowych bibliotek i użycia goto, dalo by się to jakoś prościej zrobić i pozbyć się goto??

#include <ctype.h>
#include <stdlib.h>


string a; 
	for(int i=0;;++i)
	{
		cin >> a;
		for(unsigned j=0;j<a.length();++j)
			if(isalpha(a.at(j)))goto aaa;
		tab[i]=atoi(a.c_str());
	}
  
aaa:	

Tak na szybko wpadłem na coś takiego ale wysypie się po podaniu kilku zer np 00, i jest sporo dłuższe

#include <ctype.h>
#include <stdlib.h>

string s_tmp;
int i_tmp;
for(unsigned i=0;;++i)
{
	cin>>	s_tmp;
	i_tmp=atoi(s_tmp.c_str());
	if(i_tmp)
		tab[i]=i_tmp;
	else if(s_tmp.lenght()==1 && !isalpha(s_tmp.at(0)) //rozróżnianie liter od 0
		tab[i]=i_tmp;
	else break;
}
1
int x;
string str;
int i;
int tab[100];

for(i=0; i<100;) {
    if (cin >> x) {
        tab[i++] = x;
    } else if (!cin.eof()) {
        cin.clear();
        cin >> str;
    } else {
        break;
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1