标题:大神们 为什么有时后会跳过cin呀??!!
只看楼主
帅哥汉张
Rank: 2
等 级:论坛游民
帖 子:16
专家分:15
注 册:2013-6-22
结帖率:0
已结贴  问题点数:20 回复次数:4 
大神们 为什么有时后会跳过cin呀??!!
#include<algorithm>
#include<iostream>
#include<iterator>
#include<cstdlib>
#include<vector>
using namespace std ;

int main( void )
{
    vector<int> vect ;
    int i = 0 ;
    while( cin >> i )
        vect.push_back( i );        
    for( i = 0 ; i < vect.size() ; i++ )
        cout << vect[ i ] << '\t' ;
    cout << endl ;
    cin >> i ; // 这条被跳过了
    cout << count( vect.begin() , vect.end() , i ) << endl ;
        system("pause");
    return 0;
}

上面代码里的cin这条为什么会被跳过呀??!!
搜索更多相关主题的帖子: include system return count 
2013-08-30 20:11
额外覆盖
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:城市猎人
威 望:6
帖 子:1726
专家分:5757
注 册:2012-9-22
得分:10 
以下是引用帅哥汉张在2013-8-30 20:11:38的发言:

#include
#include
#include
#include
#include
using namespace std ;
 
int main( void )
{
    vector vect ;
    int i = 0 ;
    while( cin >> i )
        vect.push_back( i );         
    for( i = 0 ; i < vect.size() ; i++ )
        cout << vect[ i ] << '\t' ;
    cout << endl ;
    cin >> i ; // 这条被跳过了
    cout << count( vect.begin() , vect.end() , i ) << endl ;
        system("pause");
    return 0;
}
 
上面代码里的cin这条为什么会被跳过呀??!!
你是不是在之前的while循环用ctrl+z结束输入的?这样自然会跳过下面的cin>>i了,在再次输入前加一个cin.clear()就行

我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2013-08-30 21:16
帅哥汉张
Rank: 2
等 级:论坛游民
帖 子:16
专家分:15
注 册:2013-6-22
得分:0 
就是ctrl+z 的
多谢大神 但是为什么呢
2013-08-31 16:10
未未来
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:182
专家分:157
注 册:2012-11-6
得分:10 
2L 正解。

while( cin >> i )结束这个循环你要用 ctrl+z 吧,在Window中相当于 eof ,cin流结束,
在用个clear(),就可以恢复流动有效状态,,我也是新手讲的不好 请多多指教,

程序代码:
#include<algorithm>
#include<iostream>
#include<iterator>
#include<cstdlib>
#include<vector>
using namespace std ;

int main( void )
{
    vector<int> vect ;
    int i = 0 ;
    while( cin >> i )
        vect.push_back( i );
    for( i = 0 ; i < vect.size() ; i++ )
        cout << vect[ i ] << '\t' ;
    cout << endl ;
    cin.clear();//这个是我加的,这样就可以了
    cin >> i ; // 这条被跳过了
    cout << count( vect.begin() , vect.end() , i ) << endl ;
        system("pause");
    return 0;
}
2013-09-05 23:50
未未来
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:182
专家分:157
注 册:2012-11-6
得分:0 
2L 正解。

while( cin >> i )结束这个循环你要用 ctrl+z 吧,在Window中相当于 eof ,cin流结束,
在用个clear(),就可以恢复流动有效状态,,我也是新手讲的不好 请多多指教,

程序代码:
#include<algorithm>
#include<iostream>
#include<iterator>
#include<cstdlib>
#include<vector>
using namespace std ;

int main( void )
{
    vector<int> vect ;
    int i = 0 ;
    while( cin >> i )
        vect.push_back( i );
    for( i = 0 ; i < vect.size() ; i++ )
        cout << vect[ i ] << '\t' ;
    cout << endl ;
    cin.clear();//这个是我加的,这样就可以了
    cin >> i ; // 这条被跳过了
    cout << count( vect.begin() , vect.end() , i ) << endl ;
        system("pause");
    return 0;
}
2013-09-05 23:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-419878-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.192143 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved