我有這樣的代碼:if(!getline(std :: cin,str1))break;這種情況檢查什麼?
while (true){
std::string cmdline;
if (!std::getline(std::cin, cmdline)) break;
std::istringstream cmdstream(cmdline);
std::string cmd;
cmdstream >> cmd;
...}
什麼的,如果條件檢查和爲什麼它在無限循環結束時,如果我離開了!
?
「當達到輸入結束時,std :: getline返回0」它實際上返回流本身,然後使用它的布爾轉換運算符將其上下文轉換爲「bool」。 'std :: getline == 0'是一個編譯時錯誤(在> = C++ 11中),在C++ 03中,轉換爲'void *',然後將其與空指針常量'0'進行比較它有效。 – 0x499602D2 2015-03-19 01:12:08
@ 0x499602D2感謝您的評論!我不想在這裏介紹一些小細節,但我想這是無法避免的。 – dasblinkenlight 2015-03-19 01:15:14