C++中string倒置的问题

作者&投稿:掌包 (若有异议请与网页底部的电邮联系)
c++中颠倒字符串怎么写?那里有错误~

首先strlen并不需要-1
其次
while(i<j) { c=string[i]; string[i]=string[j]; string[j]=c; }条件是i<j 问题是i 根本不会长, 这样就是死循环了

把Reverse函数进行如下改动:
char *Reverse(char *str3)
{
char *str1,*str2;
str1=str3+strlen(str3)-1;
str2=str3;
size_t len = strlen(str3);
size_t i = 0;
while( i < len / 2 )
{
char p = *str1;
*str1 = *(str2 + i);
*(str2 + i)=p;
str1--;
i++;
}
return str3;
}
原程序问题:
1、while循环条件有误,既然是两个指针分别从头、尾遍历字符串,则就不应该是str2!='\0'
2、交换方式不对,*str2=*str1,若只有这一个,则会把字符串头的原有内容用字符串尾部的代替,而尾部的内容也没有被字符串头的内容替换。
上面的程序仅供参考。

您好,了解到您的问题。
如果是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);

#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;
}

#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;
}

#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);
}

#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;
}


C#中String和string有什么区别?
在C#中,string 是 System.String 的别名,所以基本上在使用时是没有差别的。习惯上,我们把字符串当作对象时(有值的对象实体),我们用string。而我们把它当类时(需要字符串类中定义的方法),我们用String,比如:string greet = String.Format("Hello {0}!", place);其实乱用也可以,只是这样...

C++中 string 和cstring 头文件 有什么区别???
cstring,是兼容C的头文件.里面的函数是基于C或者说C风格的字符串处理函数或定义或宏 string是C++标准库函数.提供在std名字空间中的C++字符串处理类string

python中的string是什么意思
string:编程语言中的字符串

java中String[][] 是什么东西?string[]又是什么东西?
String[]代表一维数组。例如:String[] str=new String[4],这个创建一个有4个元素的数组。String[]代表格式为String数组;如str[1] str[2]等。String[][]代表多维数组了.[][],可以理解为几行几列。String是编程语言中的字符串,String类是不可变的,对String类的任何改变,都是返回一个新的...

Java中String不可变的原因
从原理角度来看,String类的核心在于其内部实现。String类包含三个私有属性:char数组value、整型的offset和count。这三个属性均未提供修改数值的方法,因此在初始化后无法通过外部改变其值。此外,这三个属性通过final修饰,确保内部无法改变其值。在Java的内存模型中,方法区有一块特殊存储区域——String ...

string是什么数据类型?
string有5种基本数据类型:number(整形和来洎浮点型)头、樤string、null、boolean和undefined。此外还有一种复杂的数据类型—Object,Object本质上是由一组无序的名值对象组成的,如Date对象是一个日期和时间类型。string的注意事项:java 中String 是个对象,是引用类型 ,基础类型与引用类型的区别是,...

string是什么数据类型
MFC中的CString类使用起来非常的方便好用,但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C++中string类的使用。标准C++中提供的string...

c#中的string是什么意思
字符串,用双引号引起来的几个字符.如"Abc","一天".字符串是 Unicode 字符的有序集合,用于表示文本。String 对象是 System.Char 对象的有序集合,用于表示字符串。String 对象的值是该有序集合的内容,并且该值是不可变的。String 对象称为不可变的(只读),因为一旦创建了该对象,就不能修改该...

c语言中string是啥意思啊? 控制啥的啊
编程语言中的字符串,用双引号引起来的几个字符.如"Abc","一天"。String类是不可变(final)的,对String类的任何改变,都是返回一个新的String类对象。 这样的话把String类的引用传递给一个方法,该方法对String的任何改变,对原引用指向的对象没有任何影响,这一点和基本数据类型相似。 string s1,s2; s1="abc";...

请问Sqlite 中 string和text 两种数据类型有什么区别
string是字符串,你向这个类型的数据位置写字符串的时候,传递的是什么字符串类型,它就以什么字符串类型保持。text你可以理解为在库里建了个txt文档,向这个文档里写文字,它会以这个数据类型所设置的编码进行存储。假设sqlite库中,A1是string,B1是text。我用VB向A1中写“abc”,向B1中写“abc”,...

会同县19595711444: C++中string倒置的问题
言柳晨克: #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; }

会同县19595711444: c++中输入一个字符串.使其倒序输出 -
言柳晨克: #include<stdio.h>#include<string.h> void fun(char *a) //其实你的n没有用.可以去掉 { int i,j; char t; //字符 j=strlen(a); for(i=0;i<j/2;i++)//一半就行 { t=a[i];a[i]=a[j-i-1];a[j-i-1]=t; //这里需要{}; }//是从j-1开始; // return a[i]; 不用返回 } int main() {char a[100]; scanf("%s",a);// printf("%s",fun(a,100));//是输出 fun(a);printf("%s",a); }

会同县19595711444: 求一个c++的求字符串倒序问题 -
言柳晨克: 写了段代码:带注释的// 123.cpp : 定义控制台应用程序的入口点.//#include "stdafx.h"//如果是工程就必须包含#include<iostream>#include <string.h> using namespace std; const int N = 100;//定义一个字符串的最大长度 int main() { int i, j, n; ...

会同县19595711444: C++中怎样将一个未知长度的字符串逆置输出 -
言柳晨克: public class ReverseWord { private: char *src; char *ret; int length; public: ReverseWord(char *source) { src = source; } ~ReverseWord() { if (ret != NULL) delete ret; } public char* GetReversed() {if (ret != NULL) delete ret; length = strlen(src); if (length ...

会同县19595711444: 用C++的方法写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串 -
言柳晨克: #include <string.h> #include <iostream.h> /*将字符串倒置输入为字符串str;返回字符串的地址 */ char* reverse(char *str) {char tmp;int i,n; if (str == NULL){return 0;} n=strlen(str)-1;for(i=0;i<n;i++,n--){tmp = str[i];str[i] = str[n];str[n] = ...

会同县19595711444: 高分贵求!C++如何实现字符串倒置?在线等待 -
言柳晨克: 怎么楼上的都不对啊,if(strcmp)不是判断不相等么??不等于quit就退出.再说反过来也不用开新内存啊.下面的程序通过拉:)要用事实说话!!#include #include void reverse(char *s) { int len = strlen(s), halflen = len / 2; int i = 0; char ...

会同县19595711444: c++中颠倒字符串怎么写?那里有错误 -
言柳晨克: 首先strlen并不需要-1 其次 while(i<j) { c=string[i]; string[i]=string[j]; string[j]=c; }条件是i<j 问题是i 根本不会长, 这样就是死循环了

会同县19595711444: c++中用递归函数实现字符串的倒叙输出为什么老是出问题,提示有越界问题,代码如下 -
言柳晨克: #include #include using namespace std; void flashback(string str, int n)//从你函数的实现表达的意思来看,不需要返回值 { /*string不是C风格字符串,不以'\0'为结束符,所以你这里这样的判断可能会陷入无穷递归,那样就会出现栈溢出以及访问越...

会同县19595711444: C++中关于反序输出字符串 -
言柳晨克: 这个改成 string2[size] = '\0';就行了,索引 是从0开始的,size+1,就越界了.

会同县19595711444: C++ 字符串倒序 -
言柳晨克: void ReverseString(char *pInOutputStr, long lInputLen) {/*请修改这个函数,实现该功能*/long n;char c;for(n=0;n<lInputLen/2;n++){c=pInOutputStr[n];pInOutputStr[n]=pInOutputStr[lInputLen-1-n];pInOutputStr[lInputLen-1-n]=c;}return; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网