gpt4 book ai didi

c++ - libc++abi.dylib:以 std::out_of_range 类型的未捕获异常终止:basic_string 错误?

转载 作者:行者123 更新时间:2023-11-30 03:42:08 27 4
gpt4 key购买 nike

这是我正在编写的一个函数,它接收一串由空格分隔的单词,并将每个单词添加到一个数组中。我不断收到一条错误消息,提示“libc++abi.dylib:以 std::out_of_range 类型的未捕获异常终止:basic_string”。我似乎找不到错误是什么。

void lineParser(string line, string words[])
{
string word = "";
int array_index = 0;
int number_of_words = 1;
int string_index = 0;
while (string_index < line.length())
{
if (line.substr(string_index,1) != " ")
{
int j = string_index;
while (line.substr(j,1) != " ")
{
word += line.substr(j,1);
j++;
}
words[array_index] = word;
array_index++;
word = "";
number_of_words++;
string_index = j;
}
else
{
string_index++;
}
}
}

最佳答案

您的变量 j 也可以在没有边界检查的情况下增加。它最终会超过您将其用作 (.line.substr(j,1)) 的索引的字符串的长度。

一个非常糟糕的答案是在搜索 ' ' 字符之前在字符串 line 的末尾添加一个空格。一个更好的答案是在调用任何使用它作为索引访问字符串中的字符的函数之前,根据字符串的长度检查 j。

关于c++ - libc++abi.dylib:以 std::out_of_range 类型的未捕获异常终止:basic_string 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36962012/

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