Articles

GeeksforGeeks

Rozważmy problem, w którym musimy pobrać nieznaną liczbę liczb całkowitych.

Typowym rozwiązaniem jest uruchomienie pętli i zatrzymanie jej, gdy użytkownik wprowadzi określoną wartość. Jak to zrobić, jeśli nie wolno nam używać instrukcji if-else, switch-case i warunkowych.

Pomysł polega na wykorzystaniu faktu, że 'cin >> input’ jest fałszywe, jeśli podana jest wartość inna niż liczbowa. Zauważ, że powyższe podejście jest prawdziwe tylko wtedy, gdy typem danych wartości wejściowej jest int (integer).

Ważny punkt : cin jest obiektem if std::istream. W C++11 i późniejszych, std::istream posiada funkcję konwersji explicit bool() const;, co oznacza, że istnieje poprawna konwersja ze std::istream na bool, ale tylko wtedy, gdy jest to jawnie wymagane. Instrukcja if lub while liczy się jako jawne żądanie konwersji na bool.
Przed C++ 11, std::istream miał konwersję do operatora void*() const;

#include <iostream>
using namespace std;
int main()
{
int input;
int count = 0;
cout << "To stop enter any character";
cout << "\nEnter Your Input::";

<< count;
return 0;
}



Wyjście:

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

This article is contributed by Aditya Rakhecha. Jeśli podoba Ci się GeeksforGeeks i chciałbyś przyczynić się do jego powstania, możesz również napisać artykuł korzystając z adresu contribute.geeksforgeeks.org lub wysłać go pocztą na adres [email protected]. Zobacz, jak twój artykuł pojawia się na stronie głównej GeeksforGeeks i pomóż innym Geekom.