九天雁翎的博客
如果你想在软件业获得成功,就使用你知道的最强大的语言,用它解决你知道的最难的问题,并且等待竞争对手的经理做出自甘平庸的选择。 -- Paul Graham

从易到难编写C++程序,(1)个人解答:把键盘输入的字符串逆序输出。

/*Copyright (c) 2007,九天雁翎
* All rights reserved.
* 从易到难编写C++程序,(1)问题:把键盘输入的字符串逆序输出。 
* 完成日期:2007年5月31日
*/
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
typedef vector<string>::const_iterator c_iter;
int main()
{
 vector<string> svec;    //因为要识别空格,还要换行,光一个string是不行的
 string str;
 cout<<"Please input the string you want to reverse:"<<endl;
    
//开始想以eof为结束,后来后悔了,以'!'为结束,
//开始我用cin作输入,后来后悔了,还是getline好
 while(true)
 {
  getline(cin, str);
  if(str.empty())               //假如输入空格也不应该算错误
  {
   svec.push_back(str);
   continue;
  }
  if(*(str.end() - 1) == '!')    //判断什么时候结束
  {
   str.erase(str.end() - 1);            //去掉结束符号
   reverse(str.begin(), str.end());    //利用标准库的算法逆序str
   svec.push_back(str);
   break;
  }
  reverse(str.begin(), str.end());    //利用标准库的算法逆序str
  svec.push_back(str);
 }//end of while
 reverse(svec.begin(), svec.end());               //这一步可以在下一步用反向迭代器替换
 for(c_iter it = svec.begin();            //输出svec
  it != svec.end();++it)
 {
  cout<<*it<<endl;
 }
 return 0;
}
 
//这是我个人见过最笨的方法,仅仅作为一种个人学习的历史保留,勿学,好的解答参考同题解答(2)

分类:  C++ 
标签:  C++ 

Posted By 九天雁翎 at 九天雁翎的博客 on 2007年06月04日

前一篇: 突然决定,再发文章,只讲实例,思想,不讲细节 后一篇: 从易到难编写C++程序,(2)问题:把键盘输入的16,10,8进制数转换为2进制输出