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.