//将一句话翻转
// I am a student--> student a am I
//先每个单词翻转,再整句话翻转
1 #include < iostream > 2 #include < string > 3 using namespace std; 4 5 class InvertWords{ 6 public : 7 InvertWords( string * wo):words(wo){} 8 void Invert() 9 { 10 int len = words -> size(); 11 int beg =- 1 ; 12 // 翻转整个字符串 13 InvertWord(beg,len); 14 // 翻转每个单词 15 for ( int i = 0 ;i < len;i ++ ) 16 { 17 if (words -> at(i) == ' ' ) 18 { 19 InvertWord(beg,i); 20 beg = i; 21 } 22 } 23 } 24 25 private : 26 void InvertWord( int beg, int end) 27 { 28 char tmp; 29 while ( ++ beg <-- end) 30 { 31 tmp = words -> at(beg); 32 words -> at(beg) = words -> at(end); 33 words -> at(end) = tmp; 34 } 35 } 36 string * words; 37 };