繁体   English   中英

C ++多个cin.get()

[英]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()的失败状态。

这是令人惊讶的行为,但是根据问题的最后一句话,您似乎已经猜到了最多。 您正在学习!

http://en.cppreference.com/w/cpp/io/basic_istream/get

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM