提问者:小点点

有没有方法在遇到新行时停止istream_iterator?


#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    vector<char> a(n);
    copy(istream_iterator<char>(cin),istream_iterator<char>(),a.begin());
    copy(a.begin(),a.end(),ostream_iterator<char>(cout," "));    
    return 0; 
}

在第7行中,要停止istream_iterator,需要通过按Ctrl+Z来显式停止

否则,istream_iterator将继续期望输入,并且它将一直停留在那里,直到用户按下Ctrl+Z,然后执行其余代码


共1个答案

匿名用户

不,对你来说那就错了。 如果在换行处停止,则用户可能已经输入了多于nchars的内容,然后您就有了未定义的行为,因为您将编写超出界限的内容。

您需要copy_n:

copy_n(istream_iterator<char>(cin), n, a.begin());