Articles

GeeksforGeeks

Tänk på ett problem där vi behöver ta ett okänt antal heltalsingångar.

En typisk lösning är att köra en slinga och stanna när användaren anger ett visst värde. Hur gör vi det om vi inte får använda if-else, switch-case och villkorliga påståenden.

Tanken är att använda det faktum att ”cin >> input” är falskt om ett icke-numeriskt värde anges. Observera att ovanstående tillvägagångssätt endast gäller när indatavärdets datatyp är int (heltal).

Viktig punkt: cin är ett objekt om std::istream. I C++11 och senare har std::istream en konverteringsfunktion explicit bool() const;, vilket innebär att det finns en giltig konvertering från std::istream till bool, men endast när det uttryckligen begärs. Ett if eller while räknas som en uttrycklig begäran om konvertering till bool.
För C++ 11 var std::istream hade en konvertering till operatören void*() const;

#include <iostream>
using namespace std;
int main()
{
int input;
int count = 0;
cout << "To stop enter any character";
cout << "\nEnter Your Input::";
while (cin >> input)
count++;
cout << "\nTotal number of inputs entered: "
<< count;
return 0;
}



Output:

To stop enter any characterEnter Your Input 1 2 3 sTotal number of inputs entered: 3

Denna artikel har bidragits av Aditya Rakhecha. Om du gillar GeeksforGeeks och vill bidra kan du också skriva en artikel via contribute.geeksforgeeks.org eller maila din artikel till [email protected]. Se din artikel dyka upp på GeeksforGeeks huvudsida och hjälp andra Geeks.