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.