GeeksforGeeks
Považte problém, kdy potřebujeme přijmout neznámý počet celočíselných vstupů.
Typickým řešením je spuštění smyčky a zastavení, když uživatel zadá určitou hodnotu. Jak to udělat, když nesmíme použít if-else, switch-case a podmíněný příkaz.
Námětem je využít toho, že ‚cin >> input‘ false, pokud je zadána nečíselná hodnota. Všimněte si, že tento výše uvedený přístup platí pouze v případě, že datový typ vstupní hodnoty je int (celé číslo).
Důležitý bod : cin je objekt, pokud je std::istream. V C++11 a novějších verzích má std::istream konverzní funkci explicit bool() const;, což znamená, že existuje platná konverze ze std::istream na bool, ale pouze tam, kde je to explicitně požadováno. Příkaz if nebo while se počítá jako explicitní požadavek na konverzi na bool.
Před C++ 11 std::istream měl konverzi na operátor 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; } Výstup:
To stop enter any characterEnter Your Input 1 2 3 sTotal number of inputs entered: 3
Na tomto článku se podílel Aditya Rakhecha. Pokud se vám GeeksforGeeks líbí a chtěli byste přispět, můžete také napsat článek pomocí stránky contribute.geeksforgeeks.org nebo poslat svůj článek na adresu [email protected]. Uvidíte, jak se váš článek objeví na hlavní stránce GeeksforGeeks, a pomůžete tak ostatním geekům.
.