面题:上机操作倒置句子单词不倒置,以空格为分隔符

例:my name is zheng变成 zheng is name my

 

方法一:(用string)

int main(void)

{

 string s = "Tommmm is my cat";
 int k = s.length();
 TRACE("%s\n", s.c_str());
 int j;
 ReverseString(&s, j);    //对字符串逆置
 ReverseWord(&s, j, s.length()-1);    //对最后一个单词逆置
 TRACE("%s\n", s.c_str());

ReverseWord(
&s, 0, s.length()-1); //对所有字符串逆置 TRACE("%s\n",s.c_str()); return 1; } void ReverseString(string *sSrc, int &nIndex) { int nIndexTmp =0; for (int i=0; i<sSrc->length(); i++) { if (sSrc->at(i) == ' ') { ReverseWord(sSrc, nIndexTmp, i-1); nIndexTmp = i+1; } } nIndex = nIndexTmp; } void ReverseWord(string *sWord, int nBegin, int nEnd) { while(nBegin<nEnd) { char cTmp; cTmp = sWord->at(nBegin); sWord->at(nBegin) = sWord->at(nEnd); sWord->at(nEnd) = cTmp; nBegin++; nEnd--; } }

 

附:对象指针与对象对成员函数引用的区别

/************************************************************************/
//->与.的区别(对象指针和对象的区别)
//对于对象指针的成员,我们这样引用:pObj-> Member 
//对于对象成员,这样引用:Obj.Member
/*举例如: 
有一个类:CMyObject。 
用他生成两个实例: 
CMyObject   *pObject; 
CMyObject   object; 
则在引用类成员Member时出现区别: 
pObject-> Member; 
object.Member;*/
/************************************************************************/

 

 

方法二:(用指针的方法)

 

posted on 2012-08-30 23:52  走出地平线  阅读(74)  评论(0)    收藏  举报