Преобразование потока в bool - как это делается в getline () - PullRequest
0 голосов
/ 02 апреля 2019

Мне было интересно, как это возможно, что мы можем объединить потоковые операции, используя следующий фрагмент кода:

while(getline(stream,string){
//do stuff
}

Я прочитал несколько потоков в Интернете, на stackoverflow и многих других сайтах.Я обнаружил, что потоки используют 2 оператора преобразования

operator void*() const; //c++98
explicit operator bool() const; //c++11 

И хотя я могу полностью понять преобразование c ++ 11, у меня возникают проблемы с пониманием того, как возможно обрабатывать указатель вbool test.

Ссылка говорит, что возвращается nullptr, если что-то идет не так, и некоторые другие значения, когда все в порядке.Имея все эти знания, я предполагаю, что все в порядке, тогда вы выполняете тест if () для указателя. Но что произойдет, если я попытаюсь это сделать?Мое приложение падает.

Может ли кто-нибудь объяснить мне, как указатель void * обрабатывается как true / false?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...