fork download
  1. #include <iostream>
  2. #include <limits>
  3. #include <string>
  4. #include <sstream>
  5.  
  6. int GetMark()
  7. {
  8. std::cout << "enter mark (0 - 100): " << std::endl;
  9.  
  10. std::string line;
  11. while ( getline(std::cin, line) )
  12. {
  13. std::istringstream str(line);
  14. int mark;
  15. if ( str >> mark )
  16. {
  17. if ( mark >= 0 && mark <= 100)
  18. {
  19. return mark;
  20. }
  21. }
  22. std::cout << "Invalid input: " << line << std::endl;
  23. std::cout << "enter mark (0 - 100): " << std::endl;
  24. }
  25.  
  26. // Unable to read.
  27. // Throw exception, or exit with an error message.
  28. return 0;
  29. }
  30.  
  31. int main()
  32. {
  33. int mark = GetMark();
  34. std::cout << "mark: " << mark << std::endl;
  35. }
  36.  
  37.  
Success #stdin #stdout 0s 15240KB
stdin
Bad input
Bad input 2
102020
-2020202
85
stdout
enter mark (0 - 100): 
Invalid input: Bad input
enter mark (0 - 100): 
Invalid input: Bad input 2
enter mark (0 - 100): 
Invalid input: 102020
enter mark (0 - 100): 
Invalid input: -2020202
enter mark (0 - 100): 
mark: 85