c cin.get(),cin.peek()暂停,与stdio相同
C++ cin.get(), cin.peek() pausing, same with stdio
这是我当前的代码。此代码咳嗽了CIN.Get()上的错误。我知道这不是很好的代码,它永远不会是,我只是在测试一些CIN。
#include <string>
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
char c[1000];
cin.setstate(cin.eofbit);
cout << cin.good() << endl;
cout << cin.eof() <<endl;
cout << cin.get() << endl;
cin.putback('c');
cout << cin.get() << endl;
cout << "Do we ever reach this?" << endl;
while(1){
};
return 0;
}
无论如何。我的问题是cin.get(),cin.peek(),cin.ignore(),getchar()或几乎所有cin或stdio函数,您可以在流动时暂停执行我的程序,而无需设置设置EOF碎片或任何东西。这对我来说很刺激,因为我想检查流中是否有任何东西,所以我可以清除它,因为implore()总是暂停。
我唯一可以使用的方法是" istream :: ReadSome"。我已经将其加载到一个char阵列中,并使用COUT打印了它。它打印了我不认识的一条长符号(其中每个符号都是单个符号)。
http://gyazo.com/e3ee65cdad7ed5cc7b2ce2307ca58c90
铸造到整数,它们以-52的形式出现,它不等于ASCII或Unicode中的任何内容。
我正在使用Visual C Express进行编译2010。
请帮忙,我在这一点上完全有困难。我只想阅读Chars/flush我的流,而不会停下来,如果没有任何东西。我花了3个小时尝试解决这个问题。叹息。
要摆脱已知可用的所有字符,您可以将std::istream::ignore()
与std::streambuf::in_avail()
结合使用:
std::cin.ignore(std::cin.rdbuf()->in_avail());
但是,我想这并不能真正完成您想要的事情:标准流对象只需阅读操作系统递给它们即可。通常,连接到某种控制台窗口的输入的默认模式是buffer buffer the Input。真正将多少个字符交给了流。
要检查输入流上是否有输入,您需要使用特定于平台的方法。标准C 库不提供任何非阻止检查,以查看新数据是否到达std::cin
上。在POSIX系统上,您可以将poll()
与文件描述符0
一起使用,以查看std::cin
是否具有任何数据。我不知道的非Posix系统需要什么。
- C++中的cin.ignore()函数不适用于整个流
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- Problems with std::cin.fail()
- 由cin中的字符串中未捕获空白引起的分割错误
- 在C++中使用Cin,我如何在1行中输入
- 将 cin 限制为只有一个
- 与 stdio 同步是否使程序 I/O 非交互式?
- cin >> int 给定一个字符串将 int 赋值为 0
- istream std::cin如何修改自定义istream缓冲区
- C++ 将 CIN 值存储到任何类型的数组中
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- cin 的十进制输入验证?
- Turbo C++ cin() 不能与 gets() 一起使用
- 使用 cin 时接受小数点后的 2 位数字
- 在 std::getline 和 std::cin 期间卡在循环中
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 为什么我的两个 cin 语句没有在程序结束时运行?
- C++ cin.ignore() 跳过循环
- CIN是逻辑1还是0?
- c cin.get(),cin.peek()暂停,与stdio相同