我正在制作一个正在反转给定字符串的程序。但我不知道为什么我的程序崩溃了。帮助将受到高度赞赏而不是批评。谢谢!
#include <iostream>
#include <string>
using namespace std;
string reverse(string );
int main()
{
string str;
cout << "Enter a string"<<endl;
getline (cin, str);
reverse(str);
}
string reverse (string str)
{
string str1;
for(int i = str.length(); i >= 0; i--)
{
str1[i] = str[i];
}
return str1;
}
答案 0 :(得分:3)
您的代码中至少存在三个问题:
实施留给读者作为练习。
答案 1 :(得分:3)
您无需重新发明轮子,使用算法!
#include <algorithm>
#include <iostream>
#include <string>
int main()
{
string str;
cout << "Enter a string"<<endl;
getline (cin, str);
std::reverse(str.begin(), str.end());
}
您可以在cppreference.com上详细了解std::reverse
。
答案 2 :(得分:2)
str.length()
给出了字符串的长度,但是当你使用它作为数组的索引时,最终会出现一个数组越界错误
答案 3 :(得分:0)
#include <algorithm>
#include <string>
void reverse_in_place(std::string &str) {
std::reverse(str.begin(), str.end());
}
std::string copy_and_reverse(std::string str) {
std::reverse(str.begin(), str.end());
return str;
}