#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
,然后执行其余代码
不,对你来说那就错了。 如果在换行处停止,则用户可能已经输入了多于n
char
s的内容,然后您就有了未定义的行为,因为您将编写超出界限的内容。
您需要copy_n
:
copy_n(istream_iterator<char>(cin), n, a.begin());