c++ - 回文问题代码,在 c++ 错误中抛出 'std::out_of_range' 的实例后,我确实被调用终止
问题描述
#include <iostream>
#include <string>
using namespace std;
int palindromeMethod(string str)
{
int max_val=str.size();
bool result;
for(int i=0;i<max_val;i++)
{
if(str.at(i)==str.at(max_val))
{ if(i==max_val)
{
result=true;
}
max_val=max_val-1;
}
else
{
result=false;
}
}
return result;
}
int main() {
string word="ROTOR";
bool result;
result=palindromeMethod(word);
if(result==true)
{
cout << "Given String is palindrome";
}
else
{
cout << "Given String is NOT palindrome";
}
}
我尝试运行此代码,但出现如下错误
在抛出 'std::out_of_range' 的实例后调用终止 what(): basic_string::at: __n (即 5) >= this->size() (即 5) 由信号 6 终止的命令
解决方案
您的代码中有两个错误
int max_val=str.size();
bool result;
for(int i=0;i<max_val;i++)
{
if(str.at(i)==str.at(max_val)) //<-- exception here because index must be less than size() (starting from 0)
您可以通过更改来修复它们:
int max_val=str.size() - 1; // instead of str.size()
并且循环索引也应该是<=
:
for(int i=0;i <= max_val;i++) // instead of i < max_val
推荐阅读
- javascript - 添加数据后返回组件映射而不预先初始化它
- css - iText7 中 CSS 样式的编程应用(不是 html2pdf)
- r-modis - MODIS - runGdal - strsplit 中的错误:非字符参数
- mongodb - 需要使用聚合框架将来自不同集合的文档加入到 MongoDB 中的同一文档中,其中包含计数和详细信息等信息
- reactjs - 在反应中从 JSON 数组中过滤出 null 和空值
- oracle - 时区对话
- r - 是否可以通过将文本编辑器光标放在 numericInput 控件中来在 Shiny 中呈现输出图像?
- laravel - Laravel:方法 Illuminate\Http\Response::assertInertia 不存在
- javascript - 如何重定向用户并在刷新时停止重新输入数据
- r - 可移植地将 R 数据附加到 Excel 表格(不覆盖)