c++ - 简单的方法来检查istream中是否有待处理的数据

标签 c++ io iostream

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

char buffer[256];
std::cin.get(buffer, 256, '\n');
if (!std::cin.fail()) {
// use buffer
}
但它谴责我使用C字符串等玩ios标志。难道没有更简单,更清洁的方法吗?像这样:
if (std::cin.has_data()) {
    std::string data;
    std::getline(std::cin, data);
    // do my stuff
} 

最佳答案

函数peek是解决方案。
正如cppreference所说:

If good() == true, returns the next character as obtained by rdbuf()->sgetc()

Otherwise, returns Traits::eof().

关于c++ - 简单的方法来检查istream中是否有待处理的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64260878/

相关文章:

c++ - 是否可以修复 iostream cout/cerr 成员函数指针打印为 1 或 true 的问题?

c++ - 在带有 extern "C"的 C++ 中使用 C 代码时出现问题

c++ - 使用冒泡排序对类中的 2D Char 和 Int 数组进行排序?

c++ - 将 iostream 与 stdio 同步

java - Android模拟器中的问题写入文件问题

java - 使用 arraylist 读取和写入文本文件

C: fscanf 导致未初始化变量错误

c++ - 选择要输入的流

c++ - 变量名存储在哪里?

c++ - 为什么 cin 在包含字符串头后接受字符串输入