单词进行倒置

来源:互联网 发布:sql用于授权语句的是 编辑:程序博客网 时间:2024/06/07 03:10
/******************************************************************************************用C++语言实现,将一句话中的单词进行倒置(单词之间倒转,单词本身不倒置),标点符号不导致。比如一句话“I come from tianjin. “,倒置后变成“tianjin. from come I ”。******************************************************************************************///方法是:把字符串全部反转,然后再按单词遇到空格整个反转。 #include <iostream>  #include<cstring> #include<string> using namespace std;    string strReverse(string sourcestr)  {      int j = 0, i = 0,begin,end;      string str = sourcestr;      char temp;      j = str.size() - 1;      cout << " string = " << str << endl<< j<< endl;      //先将字符串进行全部倒转 变成 .nijnaiT morf emoc I      while (j > i){          temp = str[i];          str[i] = str[j];          str[j] = temp;          j --;          i ++;      }      cout << " string = " << str << endl;        //然后进行按单词部分反转,遇到空格,则判断出一个单词结束      i = 0;      while (str[i]){          if (str[i] != ' ') { //找到单词开始和截止的位置               begin = i;              while (str[i] && str[i] != ' '){                                end = i;                  i++;              }              if (str[i] == '\0'){ //字符串的结束符                                i--;              }          }          while (end > begin){ //交换停止判断                       temp = str[begin];              str[begin] = str[end];              str[end] = temp;              end --;              begin ++;          }          i ++;      }      cout << " string = " << str << endl<< "i is " << i<< endl;//此时的i指向的是字符串最后一个 '\0'     return str;  }    int main()  {      //string str = "I come from Tianjin.";     string str;    cout << "Please enter a sentences\n" ;    getline(cin,str);    strReverse(str);      return 0;  }

0 0
原创粉丝点击