我是一名新手程序员,只是在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;
答案 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;
}