#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
string word;
vector<string> svec;
while(cin>>word)
svec.push_back(word);
for(auto &v:svec)
{
for(auto &c:v)
{
c=toupper(c);
}
cout<<v<<endl;
}
return 0;
}
对于while(cin>>n)这种输入来讲,要先按回车再ctrl+z才能终止输入。因为IO函数有缓冲。当输入aa dd ss ctrl+z 回车之后,cin调用read读到aa dd ss到缓冲中,返回aa给用户,再次调用直接返回dd,再次调用直接返回ss,从而忽略掉了ctrl+z,因为第一次read把它带过了。此刻调用cin,因为缓冲区空,于是read阻塞等待输入。输入ctrl+z,read返回0,于是cin>>调用立即返回,cin状态为eof,while退出。