Jeżeli chcesz sprawdzić poprawność absolutnie całego input'u, to nie ma wyjścia – musisz wczytać to jako tekst i sprawdzać literka po literce czy wszystkie podane znaki to są cyfry.
Jedynym wyjątkiem może być to, że przed liczbą może stać '+' (plus) lub '-' (minus). Ale Ty chcesz tylko liczby nautralne, więc tych przypadków nie rozpatrzę.
Kod zawsze uczy więcej niż tysiąc słów, więc:
include <iostream>
#include <string>
using namespace std;
int main()
{
bool liczba = true;
string naturalna;
cout << "Podaj liczbe naturalna: ";
cin >> naturalna;
for( int i = 0; i < naturalna.length(); i++ )
{
if( !isdigit( naturalna[ i ] ) )
liczba = false;
}
if( liczba )
cout << "Podana liczba to: " << naturalna << endl;
else
cout << "Nie podano liczby naturalnej!" << endl;
return 0;
}
Jeżeli będziesz miał potrzebę potraktować podaną liczbę jako liczbę a nie tekst, np. gdy chcesz wykonać na niej jakieś działanie, to music konwertować string na int. Standard C++11 zawiera kilka nowych funkcji w bibliotece <string>, które umożliwiają konwertowanie w różne strony. My chcemy string na int, więc funkcja, która to wykona nazywa się:
stoi( string ). W nawiasie podajemy string, a funkcja zwróci int. Nazwa funkcji mówi sama za siebie: stoi string-to-int.
Polecam poczytać: http://www.cplusplus.com/reference/string/stoi/
;-)