#include <iostream>
#include <string>
#include <sstream>
using namespace std;
template < typename T>
void Get( T& toSet, std:: string prompt) // read from cin
{
std:: string nextIn;
cout << prompt;
getline( cin >> std:: ws , nextIn) ;
istringstream inStream( nextIn) ;
while ( cin && ! ( inStream >> toSet) )
{
inStream.clear ( ) ;
cout << "Invalid Input. Try again.\n " << prompt;
getline( cin >> std:: ws , nextIn) ;
inStream.str ( nextIn) ;
}
if ( ! cin )
{
cerr << "\n Failed to get proper input. Exiting\n " ;
exit ( 1 ) ;
}
}
int main( )
{
string name;
int num1 = - 1 ;
cout << "\n Hello!\n " ;
Get( name, "\n Tell me your name?:" ) ;
cout << "\n Well well well, if it isn't " << name << "!\n " ;
Get( num1, std:: string ( "\n Enter a NUMBER, " ) + name + ": " ) ;
cout << "\n You entered number: " << num1 << std:: endl ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8c3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQgR2V0KFQmIHRvU2V0LCBzdGQ6OnN0cmluZyBwcm9tcHQpIC8vIHJlYWQgZnJvbSBjaW4KewoJc3RkOjpzdHJpbmcgbmV4dEluOwoJY291dCA8PCBwcm9tcHQ7CglnZXRsaW5lKGNpbiA+PiBzdGQ6OndzLCBuZXh0SW4pOwoJaXN0cmluZ3N0cmVhbSBpblN0cmVhbShuZXh0SW4pOwoJd2hpbGUoY2luICYmICEoaW5TdHJlYW0gPj4gdG9TZXQpKQoJewogICAgICAgIGluU3RyZWFtLmNsZWFyKCk7CiAgICAgICAgY291dCA8PCAiSW52YWxpZCBJbnB1dC4gVHJ5IGFnYWluLlxuIiA8PCBwcm9tcHQ7CiAgICAJZ2V0bGluZShjaW4gPj4gc3RkOjp3cywgbmV4dEluKTsKICAgIAlpblN0cmVhbS5zdHIobmV4dEluKTsgICAKICAgIH0KICAgIGlmICghY2luKQogICAgewogICAgCWNlcnIgPDwgIlxuRmFpbGVkIHRvIGdldCBwcm9wZXIgaW5wdXQuIEV4aXRpbmdcbiI7CiAgICAJZXhpdCgxKTsKICAgIH0KfQoKaW50IG1haW4oKSAKewoJc3RyaW5nIG5hbWU7CglpbnQgbnVtMSA9IC0xOwogICAgY291dCA8PCAiXG5IZWxsbyFcbiI7CiAgICBHZXQobmFtZSwgIlxuVGVsbCBtZSB5b3VyIG5hbWU/OiIpOwogICAgY291dCA8PCAiXG5XZWxsIHdlbGwgd2VsbCwgaWYgaXQgaXNuJ3QgIjw8IG5hbWUgPDwgIiFcbiI7CiAgIAlHZXQobnVtMSwgc3RkOjpzdHJpbmcoIlxuRW50ZXIgYSBOVU1CRVIsICIpICsgbmFtZSArICI6ICIpOwogICAgY291dCA8PCAiXG5Zb3UgZW50ZXJlZCBudW1iZXI6ICIgPDwgbnVtMSA8PCBzdGQ6OmVuZGw7CgogICAgcmV0dXJuIDA7Cn0=
stdout
Hello!
Tell me your name?:
Well well well, if it isn't Kevin!
Enter a NUMBER, Kevin: Invalid Input. Try again.
Enter a NUMBER, Kevin: Invalid Input. Try again.
Enter a NUMBER, Kevin: Invalid Input. Try again.
Enter a NUMBER, Kevin: Invalid Input. Try again.
Enter a NUMBER, Kevin:
You entered number: 100