 悬赏园豆:5
                [已解决问题] 
            
                    解决于 2015-09-03 19:38
                悬赏园豆:5
                [已解决问题] 
            
                    解决于 2015-09-03 19:38 
                 
        #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]);
}
明白。。蟹蟹。。