Articles

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.