用一些奇怪的结果反转一个字符串

时间:2014-06-21 16:34:48

标签: c++

我是一名新手程序员,只是在C ++上尝试一些练习。在这种情况下,练习是扭转一个字符串。但是,当我试图反转一个字符串时,在某些情况下输出后面有一些奇怪的字符。谁能告诉我什么是错的?我已经尝试彻底查看代码并且无法弄清楚出了什么问题。

示例:

输入:您好

输出:olleH0]         K] YJV @ý

#include <iostream>
#include <string.h>
using namespace std;

string FirstReverse(string str) { 
    int k,y,z;
    k = strlen(str.c_str()); 
    y = k-1;

    char str2[k];

    for (z = 0; z < k; z++) {
        str2[z] = str.c_str()[y];

        if (y==0) break; 
        else y--;
        }

  return str2; 

}

int main() { 
    string x;  
    getline(cin, x);    
    cout << FirstReverse(x);
    return 0;

} 

编辑:

事实证明,我可以在不使用C样式字符串的情况下完成:

int k,y,z;
    k = str.length(); 
    y = k-1;

    string str2;

    for (z = 0; z < k; z++) {
        str2 += str[y];
        y--;
        }
  return str2; 

1 个答案:

答案 0 :(得分:1)

algorithm包含一个名为reverse

的函数
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main()
{
   string my_string = "Hello World";
   reverse(my_string.begin(), my_string.end());
   cout << my_string << endl; 
   return 0;
}