注册 登录
编程论坛 C++教室

大神们 为什么有时后会跳过cin呀??!!

帅哥汉张 发布于 2013-08-30 20:11, 756 次点击
#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这条为什么会被跳过呀??!!
4 回复
#2
额外覆盖2013-08-30 21:16
以下是引用帅哥汉张在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()就行
#3
帅哥汉张2013-08-31 16:10
就是ctrl+z 的
多谢大神 但是为什么呢
#4
未未来2013-09-05 23:50
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;
}
#5
未未来2013-09-05 23:51
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;
}
1