GeeksforGeeks
Tegyünk fel egy olyan problémát, ahol ismeretlen számú egész szám bemenetet kell felvennünk.
A tipikus megoldás egy ciklus futtatása és leállítása, amikor a felhasználó beír egy adott értéket. Hogyan csináljuk, ha nem használhatunk if-else, switch-case és feltételes utasítást.
Az ötlet az, hogy kihasználjuk, hogy a ‘cin >> input’ hamis, ha nem számjegyes értéket adunk meg. Vegyük észre, hogy ez a fenti megközelítés csak akkor igaz, ha a bemeneti érték adattípusa int (egész szám).
Fontos pont : a cin egy objektum, ha std::istream. A C++11-ben és későbbiekben az std::istream rendelkezik egy explicit bool() const; konverziós függvénnyel, ami azt jelenti, hogy létezik érvényes konverzió std::istreamből boolba, de csak akkor, ha kifejezetten kérik. Az if vagy a while úgy számít, mintha explicit módon kérnénk a boolba való konvertálást. 
A C++ 11 előtt az std::istreamnek volt egy konverziója a void*() const operátorhoz;
#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;  } Kimenet:
To stop enter any characterEnter Your Input 1 2 3 sTotal number of inputs entered: 3
A cikk szerzője Aditya Rakhecha. Ha tetszik a GeeksforGeeks és szeretnél hozzájárulni, írhatsz cikket a contribute.geeksforgeeks.org címen, vagy elküldheted a cikkedet a [email protected] címre. Láthatod, hogy a cikked megjelenik a GeeksforGeeks főoldalán, és segíthetsz más geekeknek.