字符串反向程序崩溃
String reverse program crashes
我正在制作一个反转给定字符串的程序。但我不知道为什么我的程序会崩溃。我们将高度赞赏帮助,而不是批评。谢谢
#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;
}
您的代码中至少有三个问题:
- 在使用[]访问字符串之前,您需要有一个长度为的字符串,尤其是在对其进行写入时
- 代码正在尝试访问越界
- 该算法只是以相反的顺序复制字符串,而不是反转字符串本身
实现留给读者练习。
你不需要重新发明轮子,使用算法!
#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
的信息。
str.length()
提供了字符串的长度,但当您将其用作数组的索引时,最终会出现数组越界错误
#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;
}
相关文章:
- 提升 ASIO Async_receive崩溃程序
- 类指针方法崩溃程序
- get_body来自 IHTMLDocument2 崩溃程序
- 是否有可能存在不会崩溃程序的内存问题
- 调试运行时出现奇怪的崩溃程序(Eclipse C++)
- 儿童对话框 - setWindowTexta或sendmessagea崩溃程序-MFC
- 顶点阵列GLFW崩溃C 程序
- 将值分配给Float数据类型崩溃程序
- OpenCV-将变量添加到类成员崩溃程序
- boost::interprocess::managed_shared_memory 崩溃程序
- 将枚举值分配给整数崩溃程序
- SDL 1.2 -> SDL 2.0(崩溃程序)
- 空析构函数崩溃程序:C++
- 冒泡排序崩溃程序c++
- Ofstream关闭崩溃程序
- 删除字符* 崩溃程序
- c++矢量擦除崩溃程序
- Lua_getglobal崩溃程序
- 通过Copy Constructor创建的e2打印崩溃程序
- RNG崩溃c++程序