gpt4 book ai didi

c++ - 理解错误 "terminate called after throwing an instance of ' std::length_error' what(): basic_string::_S_create Aborted (core dumped)"

转载 作者:可可西里 更新时间:2023-11-01 15:09:06 29 4
gpt4 key购买 nike

所以这是我的错误:

terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_S_create
Aborted (core dumped)

这是我的代码:

//Code removed

string generateSong(string list[], int num)
{
//Code removed

//Code removed

for (i = 0; i < num; i++)
{
output += list[i];
output += bone1;
output += list[i + 1];
output += bone2;
}

return output;
}

int main()
{
string list[9] =
{

//Code removed

};

//Code removed

return 0;
}

我只想知道该错误的含义,以便我知道如何修复它。我看到很多帖子都有类似的错误,但没有完全相同的。从字面上看,我才刚刚开始使用 C++,而这些答案对我目前所学的知识都没有任何意义。如您所见,这是一个输出歌曲的简单程序。它旨在帮助我为我正在上的课练习弦乐,但它对我来说完全没有意义,而且这本书也没有太大帮助。有人可以给我解释一下吗?

附言如果这有帮助,它将使用 g++ 进行编译,但在运行时会出现该错误(因此基本上这不是编译错误,而是运行错误)。

最佳答案

这部分代码是可疑的:

 for (i = 0; i < num; i++)
{
output += list[i];
output += bone1;
output += list[i + 1]; // <--- here
output += bone2;
}

您的数组长度为 9,因此其中的有效索引范围为 0、1、2、...、8。在迭代 8 中,指定的行将尝试读取无效的数组索引 9。这会导致未定义的行为,在您的情况下,这是有关无效字符串的误导性错误消息。

您必须决定要采取哪些步骤来解决此问题,但我相信这是问题的直接原因。

希望这对您有所帮助!

关于c++ - 理解错误 "terminate called after throwing an instance of ' std::length_error' what(): basic_string::_S_create Aborted (core dumped)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20254996/

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