关于反转字符串的问题

时间:2011-09-17 21:00:13

标签: c++ string reverse

我得到以下输出:olleh hello但无法弄清楚我哪里出错!

 int main()
    {

       char hello[6] = "hello";
       char temp[6]; 
       unsigned int t = 0;
       for(int i=strlen(hello)-1;i>=0;i--)
       {
       if(t<strlen(hello))
        {
          temp[t] = hello[i];
          t++;
        }
      }
      cout << temp;
      return 0;
    }

3 个答案:

答案 0 :(得分:7)

在字符串的末尾需要一个空终止符:

int main()
{

   char hello[6] = "hello";
   char temp[6]; 
   unsigned int t = 0;
   for(int i=strlen(hello)-1;i>=0;i--)
   {
   if(t<strlen(hello))
    {
      temp[t] = hello[i];
      t++;
    }
  }
  temp[t] = '\0';
  cout << temp;
  return 0;
}

答案 1 :(得分:7)

你把这个问题标记为[C ++],所以这里是C ++反转字符串的方式:

#include <iostream>
#include <string>
#include <algorithm>

int main()
{
    std::string hello = "hello";
    std::reverse(hello.begin(), hello.end());
    std::cout << hello << std::endl;
}

这里很难犯错误

答案 2 :(得分:3)

您没有使用null(temp)终止\0,因此temp不是有效字符串而cout不知道该怎么做用它。如果添加以下内容,您的问题就会消失:

temp[5] = 0;

for循环之后。