C++中string倒置的问题

可不可以帮忙写个C++程序或者函数,把string倒置 例如:输入string后它会输出gnirts 输入abcdefg后它会输出gfedcba

第1个回答  2022-07-21
您好,了解到您的问题。
如果是string类型的话很简单:
string str; //假设您使用这个变量
...
str = string(str.rbegin(), str.rend());
...
还有STL的reverse:
reverse(str.begin(), str.end());
如果是char[],可以:
char str[...]; //假设您使用这个char[],这个方法对string也通用,只是函数要换一下
...
int len = strlen(str); //强烈建议您用这个变量,不过也可以不用,因为strlen()有O(n)的时间复杂度
for (int i = 0, t; (i+1)<=len; i++)
t = str[i], str[i] = str[len-i-1], str[len-i-1] = t;
当然,也可以用@cpucash所说的strrev:
strrev(str);
第2个回答  2013-03-29
#include <iostream>
#include<stdio.h>
using namespace std;
int main()
{ char s[100];
cout<<"请输入一个字符串:"<<endl;
for(int i=0;i<100;i++)
{
s[i]=getchar();
if(s[i]=='\n')
{
s[i]='\0';
break;
}
}
cout<<"倒置后的字符串是:"<<endl;
for(int i=strlen(s)-1;i>=0;i--)
cout<<s[i];
return 0;
}
第3个回答  2013-03-30
#include <iostream>
#include <string>
using namespace std;string change(string str)
{
string str_temp="";
for(int i=0;i<str.length();i++)
{
str_temp+=str[str.length()-i-1];
}
return str_temp;
}int main()
{
string str;
cin>>str;
cout<<change(str)<<endl;
return 0;
}
第4个回答  2013-03-29
#include <stdio.h>
main()
{char str[1000],str1[1000];
char *p;
int i=0,j=0;
scanf("%s",str);
p=str;
while(*p)
{ p++;
i++;
}
p--;
while(*p)
{
str1[j]=*p;
p--;
j++;
}
str1[i]='\0';
printf("%s",str1);
}
第5个回答  2013-03-30
#include <iostream>
#include <string>
using namespace std;

int main()
{
char t,str[255];
while(1){
gets(str);
int len = strlen(str);
for(int i = 0; i < len/2; i ++)
{
t = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = t;
}
cout << str << endl;
}
return 0;
}