cin 文件结束符

看了网上说的,c++的cin会检查“Ctrl + z”(Windows下)或“Ctrl + d" (Linux/Unix下)来判断输入是否结束。

其本质是检查cin.bad()的调用结果,若为true,则结束输入。

对于下面这两种情况:

1)
int
val; vector<int> vals; while( cin >> val) { vals.push_back(val); }
2)  
string val; vector<string> vals; while( cin >> val) { vals.push_back(val); }

对于1),由于输入的值要求能被转换为int,因此 在控制台输入 “ 1 5 7 ^z",回车后,会将 1, 5, 7 存入vector,而遇到 ^z时,由于无法转换,cin.bad()为true, 因此结束输入。因此,此时不仅可以输入 ctrl + z ,还可以输入任何非整数/浮点数 来作为结束符。

对于2),输入的值存为string,此时 若输入” a  abc   ^z",再回车, 由于^z之前有合法的字符串,因此^z也被当做一个char字符来处理,被放入输入缓冲区,而无法结束输入, 打印时,vals中 将输出“a abc ->".若想结束输入,则应该先输入”a abc"回车,将字符串录入,之后 再输入“^z"然后回车,表示输入结束。

posted on 2013-05-09 11:03  没有什么能够阻挡  阅读(607)  评论(0编辑  收藏  举报

导航