【问题标题】:Easy way to check whether there is data pending in istream检查 istream 中是否有待处理数据的简单方法
【发布时间】:2021-01-23 09:41:26
【问题描述】:

是否有任何标准的非阅读方式来检查输入流中是否有任何待处理的字符?我总是可以尝试类似的东西

char buffer[256];
std::cin.get(buffer, 256, '\n');
if (!std::cin.fail()) {
// use buffer
}

但它谴责我玩 ios 标志,使用 C 字符串等等。没有更简单,更清洁的方法吗?像这样:

if (std::cin.has_data()) {
    std::string data;
    std::getline(std::cin, data);
    // do my stuff
} 

【问题讨论】:

    标签: c++ io iostream


    【解决方案1】:

    函数peek就是解决方案。

    正如 cppreference 所说:

    如果 good() == true,返回下一个字符 rdbuf()->sgetc()

    否则,返回 Traits::eof()。

    【讨论】:

      猜你喜欢
      • 2011-12-19
      • 2012-10-27
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2010-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多