C++ 在C+中反转字符串时出现意外输出+;

C++ 在C+中反转字符串时出现意外输出+;,c++,string,C++,String,我编写了一个简单的代码来反转字符串,但得到了一个奇怪的输出。例如,如果我输入“hello”,我会得到输出“qlleh”,我真的不知道为什么 代码如下: #include <iostream> #include <string> using namespace std; int main(int argc, char* argv[]) { int a = 0; char s[1024],r[1024]; cout<<"Enter a string:"

我编写了一个简单的代码来反转字符串,但得到了一个奇怪的输出。例如,如果我输入“hello”,我会得到输出“qlleh”,我真的不知道为什么

代码如下:

#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
   int a = 0;
  char s[1024],r[1024];

cout<<"Enter a string:";
cin>>s;
    for(int i = char_traits<char>::length(s); i >= 0; i--){
                //if(isalpha(s[i]))
                r[a++] += s[i];
    }


    cout<<r;
}
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
int a=0;
字符s[1024],r[1024];
沙发;
对于(int i=char\u traits::length(s);i>=0;i--){
//if(isalpha(s[i]))
r[a++]+=s[i];
}

不能您只想使用“=”。a“+=”将增加实际字符值。因此,“a”+2='c.

为什么在
r[a++]+=s[i]中使用
+=
?你应该做一个直接的赋值,也就是
=
。如果我使用一个简单的赋值,它会在循环每次迭代时用一个字母替换另一个字母…你到底希望
+=
做什么?@NathanOliver说了什么,另外:用
I=len(s)开始你的循环-1
否则
r
将以
\0
开头,并且不会被打印,在循环集
r[a]='\0'
之后,cf.@JONNICAREYN你说“赋值每次循环迭代时,它将用另一个字母替换”,好像这是一件坏事。我想这正是你想要的。