首页 > 代码库 > (转)c++字符串反转
(转)c++字符串反转
//通过不同的方法,实现对所输入字符串的反转,可以很好地复习巩固 C++ 基础知识
/*分析过程:
假设要使传递的字符串为常量const字符串,这样操作更加灵活,可直接传递字符串字面值进行反转,常见的解决方法就是,定义一个新的与传递过来字符串长度
相等的字符数组,然后进行字符串拷贝,把str字符按从左到右放置到字符数组中,然后采用循环来对字符数组中字符反转
*/
#include <iostream> #include <string>
/*第一种,采用以上思路解法,传递为const类型C风格字符指针,返回为char*类型*/
//直接使用字符数组赋值
char* strrev(const char* pChar) { size_t len=strlen(pChar); char* pTemp=new char[len+1]; memset(pTemp,0,len+1); memcpy(pTemp,pChar,len); char ch; for(size_t i=0;i<len/2;i++) { ch=pTemp[i]; pTemp[i]=pTemp[len-1-i]; pTemp[len-1-i]=ch; } return pTemp; }
//采用指针操作方式 char* strrevp(const char* pChar) { char* pTemp=new char[strlen(pChar)+1]; memset(pTemp,0,strlen(pChar)+1); strcpy(pTemp,pChar); char* pRelt=pTemp; //这个要注意(因为pTemp在交换过程中改变了) char* p=pTemp+strlen(pChar)-1; char ch; while(p>pTemp) { ch=*p; *p--=*pTemp; *pTemp++=ch; } return pRelt; } int main() { std::string str("Hello"); int len=std::strlen(str.c_str()); std::cout<<"Length = "<<len<<std::endl; char* pRev=strrev(str.c_str()); std::cout<<"Result : "<<pRev<<",Length : "<<strlen(pRev)<<std::endl; //if(NULL!=pRev) delete [] pRev; std::string str2("World"); char* pNext=strrevp(str2.c_str()); std::cout<<"Result : "<<pNext<<",Length : "<<strlen(pNext)<<std::endl; delete [] pNext; std::cout<<"Over"<<std::endl; getchar(); return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。