程序在Visual Studio Community 2015中执行后,它会显示调试错误
After the program executes in Visual Studio community 2015 it shows debug error.
一旦我输入字符串并按回车键,编译器就会显示调试错误并说遇到 abort()。到底出了什么问题?
#include<iostream>
#include<string>
using namespace std;
int main()
{
std::string str;
std::string rev;
std::cout << "Enter the stringn";
std::getline(std::cin, str);
int len = str.size();
for (int i = len; i > 0; i--)
{
std::string temp;
temp= str.at(i);
int j = 1;
rev.insert(j, temp);
j++;
}
std::cout << "The reversed string isn";
std::cout << rev;
cout << "Thank You";
cin.get();
}
for (int i = len; i > 0; i--)
应该是
for (size_t i = len - 1; i >= 0; i--)
// ^^^ ^
声明
temp= str.at(i);
否则,第一次迭代将超出范围。
c++ 中的索引在[0 ... (size - 1)]
范围内。
前面的答案指出了str.at (i)
的问题。还有另一个:在第一次迭代中,它调用 rev.insert (1, ...)
.由于 rev 在这一点上的长度为零,因此这是越界访问,这将导致引发out_of_range异常,从而终止程序。
此外,将 j 的声明移出循环。现在,每次都以值 1 重新创建它。
将整个字符串对象用于 tmp 似乎矫枉过正。事实上,rev += str.at(i);
可以取代整个环体。
相关文章:
- 显示错误输出的简单数组排序程序
- 我是 c++ 的新手.学习基本知识后,我想做井字游戏.对于印刷板,我在下面写代码,但它显示错误
- Clion显示错误,但可以使用Cmake成功构建代码
- 代码使用向量成功运行,但使用数组显示错误
- SDL 映像:无法打开映像,仅显示错误消息
- 为什么将指针重新分配给 1D 数组的 char 时显示错误,但 2D 数组工作正常?
- 与clang++一起使用的VS代码在构建良好的C++文件中显示错误
- 编译器没有显示错误,但我没有得到任何输出.怎么了?
- PPM 颜色显示错误
- 当我选择大于 720 的矩阵大小时,程序退出并显示错误代码.可能是什么原因?
- is_permutation方法从 #include<algorithm> 显示错误的输出
- 为什么使用与父级声明的 std::function 在与子级一起使用时会显示错误?
- 我的代码厨师提交显示错误的结果
- 显示错误"std_lib_facilities.h"
- 为什么C++显示错误的数字?
- Android (ART) 崩溃并显示错误 JNI 在应用程序中检测到错误:jstring 是无效的本地引用
- 这是我的 .h 文件的一些错误,当我在其中包含我的类模板时,它显示 [错误] 未终止 #ifndef
- c++ IF 语句执行,但添加 ELSE 会显示错误
- 内核.cpp在制作 kernel.o 时显示错误和 Makefile 错误
- C++代码编译,但在 Zorin OS 上运行时显示错误