checking for eof in string::getline

前端 未结 2 1294
陌清茗
陌清茗 2020-11-29 23:43

How do I check for end-of-file using the std::getline function? If I use eof() it won\'t signal eof until I attempt to read beyond end

2条回答
  •  春和景丽
    2020-11-30 00:18

    The canonical reading loop in C++ is:

    while (getline(cin, str)) {
    
    }
    
    if (cin.bad()) {
        // IO error
    } else if (!cin.eof()) {
        // format error (not possible with getline but possible with operator>>)
    } else {
        // format error (not possible with getline but possible with operator>>)
        // or end of file (can't make the difference)
    }
    

提交回复
热议问题