C++ 为什么第二个函数不等待用户输入?

C++ 为什么第二个函数不等待用户输入?,c++,gcc,stdin,C++,Gcc,Stdin,Mymain.cpp调用两个函数对整数进行排序,由用户在stdin中给出 问题::调用SortIteratorAdaptor()工作正常,但在SortVector()中无需等待用户输入即可退出我认为,这是因为EOF位于stdin位置,使得第二个std::cin退出而不等待用户输入。如果是这样的话,在`stdin? #include <iostream> #include <vector> #include <iterator> #include <alg

My
main.cpp
调用两个函数对整数进行排序,由用户在
stdin
中给出

问题::调用
SortIteratorAdaptor()
工作正常,但在
SortVector()
中无需等待用户输入即可退出我认为,这是因为
EOF
位于
stdin
位置,使得第二个
std::cin
退出而不等待用户输入。如果是这样的话,在`stdin?

#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>


void SortIteratorAdaptor( void )
{
 std::vector<int> v ;

 std::cout << "Enter SortIterator Elems\n" ;
 std::copy(std::istream_iterator<int> (std::cin),std::istream_iterator<int> (),\ 
 std::back_insert_iterator<std::vector<int> > (v) ) ;

 std::sort( v.begin(), v.end() ) ;

 std::cout << "Sorted Elems Are:\n" ;
 std::copy( v.begin(), v.end(), std::ostream_iterator<int> (std::cout, "\n") ) ;

 return ;
} 

void SortVector( void )
{
 std::vector<int> v ;

 int n = 0 ;
 std::cout << "Enter Vector elements, Press Ctrl+D to break std::cin\n" ; 
 while( std::cin >> n ) v.push_back( n ) ;

 std::cout << "\n" << "Sorted Elems Are:\n" ;
 std::sort( v.begin(), v.end() ) ;
 for( n = 0; n < v.size(); n++ ) std::cout << v[n] << "\n" ;

 std::cout << "\n\n" ;
 return ;
} 

int main( int argc, char** argv )
{
 std::cout << "Begin Sort Ints with Iterator_Adaptors and vectors\n" ;
 SortIteratorAdaptor() ;

 std::cout << "Begin Sort Ints with vectors\n" ;
 SortVector() ;

 std::cout << "Exiting..." ; 
 return 0 ;
} 
#包括
#包括
#包括
#包括
无效Sortiterator适配器(无效)
{
std::向量v;

std::cout听起来就像使用
std::copy()
with
std::cin
执行后将输入流保持在失败状态(这是正常的,否则复制循环不会结束)

std::cin.clear();

在这行之后(另请参见)。

谢谢,工作起来很有魅力。没有办法不用调用std::cin.clear()来刷新stdin吗?@Abhineet std::cin.ignore(INT_MAX);