题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 例如输入“I am a student.”,则输出“student. a am I”。
1#include<iostream>
2 #include<sstream>
3 #include<string>
4 #include<iterator>
5 #include<algorithm>
6
7 using namespace std;
8
9 template<class InputIterator, class T>
10 void reverse(InputIterator iteBegin, InputIterator iteEnd, T &temp)
11 {
12 iteEnd --;
13 while(iteBegin < iteEnd)
14 {
15 cout << *iteBegin <<endl;
16 temp = *iteBegin;
17 *iteBegin = *iteEnd;
18 *iteEnd = temp;
19 iteBegin ++;
20 iteEnd --;
21 }
22 }
23
24 template<class InputIterator ,class T>
25 void reverse_sentence(InputIterator iteBegin , InputIterator iteEnd, T &temp)
26 {
27 reverse(iteBegin, iteEnd, temp);
28 const char chSpace(' ');
29
30 cout << "reverse sentence over " << endl;
31
32 InputIterator ite = find(iteBegin, iteEnd, chSpace);
33 while(iteBegin < iteEnd)
34 {
35 reverse(iteBegin, ite, temp);
36 iteBegin = ++ite;
37 ite = find(iteBegin, iteEnd, chSpace);
38
39 }
40 }
41
42 int main()
43 {
44 string s;
45 char chTemp;
46
47 while(getline(cin, s))
48 {
49 cout << s <<endl;
50 cout << "-----------------------------------------------"<<endl;
51 reverse_sentence(s.begin(), s.end(), chTemp);
52 cout << s << endl;
53 cout << endl;
54 }
55 return 0;
56 }