Что на самом деле означает while (cin)? - PullRequest
0 голосов
/ 26 октября 2019

Я знаю, пока (cin) означает, что, хотя все предыдущие операции с cin были выполнены успешно, продолжайте цикл. Но что это на самом деле означает?

Означает ли это "после того, как я ввел все значения, которые я хочу, продолжить цикл" или "после завершения ввода, который предшествует продолжению цикла" или как? Я в замешательстве.

Если до того времени не было никакого влечения (cin), что тогда произойдет?

Ответы [ 2 ]

2 голосов
/ 26 октября 2019

Класс std::istream наследует класс std::basic_ios, который содержит оператор преобразования

explicit operator bool() const;

, который возвращает !fail().

В контексте оператора while объект объектатип std::cin преобразуется в объект типа bool с помощью этого оператора.

Фактически этот цикл while эквивалентен

while ( not std::cin.fail() )

То есть цикл будет выполнять свои итерации, покавозникнет какая-то ошибка или конец потока.

0 голосов
/ 26 октября 2019

Простой кусок кода позволяет многократно запускать код (что-то вроде бесконечного цикла):

#include <iostream>
using namespace std;

int main() {
   while (cin) {
      cout << "HI";
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...