Почему код пропускает cin?
Я не понимаю, как работает ввод булевых значений? Почему этот код пропускает cin<<a, не дав ввести переменную и устанавливает ей значение 0
#include <iostream>
using namespace std;
int main() {
bool a;
cin >> a;
cout<<a;
}
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Потому что ввод проверять нужно и потому что булевы значения вводятся как 0 и 1:
#include <iostream>
using namespace std;
int main() {
bool a;
if (!(cin >> a)) {
cerr << "Error\n";
return 1;
}
cout << a << '\n';
}
$ g++ temp.cpp $ echo true | ./a.out Error $ echo 1 | ./a.out 1
Если хотите вводить булевы значения как false или true используйте boolalpha:
#include <iostream>
using namespace std;
int main() {
bool a;
if (!(cin >> boolalpha >> a)) {
cerr << "Error\n";
return 1;
}
cout << a << '\n';
}
$ g++ temp.cpp $ echo 1 | ./a.out Error $ echo true | ./a.out 1