gpt4 book ai didi

c++ - 演示代码抛出 out_of_range 异常,但我不知道为什么

转载 作者:行者123 更新时间:2023-11-28 00:01:35 26 4
gpt4 key购买 nike

我正在用 C++ 编写代码以删除任何两个相同的连续字符。例如:

 - aa -> empty string  - aabb -> empty string  - abba -> aa -> empty string (as removal of 'bb' makes it 'aa')  - abab -> abab (not possible)
#include <iostream>
using namespace std;

int main()
{
int i;
string s;
bool match = true;
getline(cin, s);
while (match) {
match = false;
for (i = 0; i < s.length() - 1; i++) {
if (s.at(i) == s.at(i+1)) {
s.erase(i,2);
match = true;
}
}
}
if (s == "") {
cout << "Empty!";
}
else {
cout << s;
}
return 0;
}

最佳答案

s.length() 是无符号的,s.length() - 1s.length() 是0.

在执行减法之前,您应该检查 s.length() 是否为零:

for (i = 0; s.length() > 0 && i < s.length() - 1; i++) {

关于c++ - 演示代码抛出 out_of_range 异常,但我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38554238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com