[英]C++ multiple cin.get()
似乎是一个老问题,但是这里的问题不是两个cin.get()的使用,而是两个以上的使用! 如果我写(在DEV C ++中)
我只收到一个输入请求,然后结束程序。 现在,我希望至少有两个cin请求,因为我希望:
char s[50];
char t[100];
char r[100];
char f[100];
cin.get(s,49);
cin.get(t,99);
cin.get(r,99);
cin.get(f,99);
我至少提出了2个输入请求,因为:
first cin: buffer empty,I insert the string s and \n
second cin: I have in buffer \n still, then t=\n without input request
third cin: buffer empty, I insert the string r and \n
fourth cin: I have in buffer \n still, then f=\n without input request
但是我只有s字符串的输入请求! 为什么我只有一个输入请求?缓冲区没有用第二个cin.get清理,让第三个cin.get正常工作? 谢谢
t
不等于'\\n'
。 它是空的。 .get(char*,int)
永远不会从缓冲区中删除'\\n'
。
更糟的是,阅读的尝试t
将设置cin
到故障状态,因为没有什么可以读取,这将导致从任何形式的所有后续读取cin
立即失败,甚至没有尝试,直到你.clear()
的失败状态。
这是令人惊讶的行为,但是根据问题的最后一句话,您似乎已经猜到了最多。 您正在学习!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.