Using return value of cin to take unknown number of inputs in C++
Last Updated :
23 Jun, 2022
Consider a problem where we need to take an unknown number of integer inputs.
A typical solution is to run a loop and stop when a user enters a particular value. How to do it if we are not allowed to use if-else, switch-case, and conditional statements?
The idea is to use the fact that ‘cin >> input’ is false if the non-numeric value is given. Note that the above approach holds true only when the input value’s data type is int (integer).
Important Point: cin is an object of std::istream. In C++11 and later, std::istream has a conversion function explicit bool() const;, meaning that there is a valid conversion from std::istream to bool, but only where explicitly requested. An if or while counts as explicitly requesting conversion to bool. [Source StackOVerflow]
Before C++ 11, std::istream had a conversion to operator void*() const;
C++
#include <iostream>
using namespace std;
int main()
{
int input;
int count = 0;
cout << "To stop enter anything except integer" ;
cout << "\nEnter Your Input::" ;
while (cin >> input)
count++;
cout << "\nTotal number of inputs entered: "
<< count;
return 0;
}
|
Output:
To stop enter any character
Enter Your Input 1 2 3 s
Total number of inputs entered: 3
Time Complexity: O(count)
Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...