所以这是我的错误:
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++ 开始,这些答案都与我迄今为止所学的没有任何意义。如您所见,这是一个输出歌曲的简单程序。它旨在帮助我为正在上的课程练习弦乐,但这对我来说绝对没有意义,而且这本书也没有太大帮助。有人可以向我解释一下吗?
PS如果这有帮助,它将使用g ++进行编译,但是当它运行时会出现错误(所以基本上它不是编译错误,而是运行错误)。
原文由 scbeacham 发布,翻译遵循 CC BY-SA 4.0 许可协议
这部分代码很可疑:
您的数组长度为 9,因此其中的有效索引范围为 0、1、2、…、8。在第 8 次迭代中,指示的行将尝试读取无效的数组索引 9。这会导致未定义的行为,在您的情况下,这是关于无效字符串的误导性错误消息。
您必须决定要采取哪些步骤来解决此问题,但我相信这是问题的直接原因。
希望这可以帮助!