#include<iostream>
#include<string>
using namespace std;
int main(){
string a, b, c;
getline(cin, a);
for (unsigned int i = 0; i < a.size(); i++){
if (a[i] == ' '){
c.push_back(' ');
b.insert(0, c);//在b的0位置插入c字符串
c.erase(0);//从0位置删除以后全部内容
continue;//一定要写这个。
}
c.push_back(a[i]);
}
//因为最后没有空格了,所以额外需要添加
c.push_back(' ');
b.insert(0, c);
b.erase(b.size()-1);//删除最开始加入的空格,也可不要
cout << b;
return 0;
}
影响就是当 if (a[i] == ' ') 成立后 c.push_back(a[i]);执不执行的问题.
如果去掉的话, if (a[i] == ' ') 成立与否, c.push_back(a[i]); 都会执行
如果不去掉的话 ,只有在 if (a[i] == ' ') 不成立的时候 c.push_back(a[i]);才执行
不去掉的情况等同于 下面的代码
if (a[i] == ' '){
c.push_back(' ');
b.insert(0, c);//在b的0位置插入c字符串
c.erase(0);//从0位置删除以后全部内容
}else{
c.push_back(a[i]);
}
明白。。蟹蟹。。