对getline函数不理解,浪费了很多时间,其实getline()是可以读取到回车键的,之前wa那么多次就是因为没有意识到这一点,导致各种异常发生,例如,读取样例的数目时,按回车后会执行循环体1次,输出奇怪的东西,而最后一个样例输入时却不能处理
#include<iostream>
#include<string>
using namespace std;
int main()
{
int t;
cin>>t;
int tempt=t+1;
string s;
while(tempt--&&getline(cin,s))
{
if(tempt==t) //读取到输入样例数目后的回车
continue;
string tempw="";
for(int j=0;j<s.length();j++) //对读取到的每一行数据进行处理
{
if(s[j]==' ') //读取到空格,处理空格前的单词
{
for(int k=tempw.length()-1;k>=0;k--) //反向输出空格前的单词
cout<<tempw[k];
cout<<" ";
tempw="";
}
else
tempw+=s[j]; //依次把每个字符组合到新的单词中
}
//输出最后一个单词,因为最后一个单词后面没有空格了,如果结尾是空格也没有关系,因为tempw的长度为0,不会输出
for(int k=tempw.length()-1;k>=0;k--) cout<<tempw[k];
cout<<endl;
}
return 0;
}