C ++ :: libc ++ abi.dylib中的字符串库出错:终止于类型为std :: out_of_range的未捕获异常:basic_string(lldb)

时间:2019-01-23 05:49:31

标签: c++ string xcode

我被要求问一个短语和一个单词,并用“ *”替换所有单词。

示例: 短语:我爱狗,但我妹妹不喜欢狗

字:狗

最后一句话:我爱*但我妹妹不喜欢*

当我在循环中放入该短语的提示时,它会按原样显示它,但我收到“ libc ++ abi.dylib:以类型为std :: out_of_range:basic_string的未捕获异常终止 (lldb)”错误

您至少需要10个信誉才能发布图像:https://imgur.com/5Zf9ys5.jpg

#include <iostream>
#include <string>
using namespace std;
int main()
{
string frase;
string palabra;
getline(cin,frase);
getline(cin,palabra);
int longitud = palabra.length();
int encontrar = frase.find(palabra);

while(encontrar != 1){
    if(encontrar != 1){
        encontrar = frase.find(palabra);
        frase.erase(encontrar,longitud);
        frase.insert(encontrar, " * ");

    }
    cout<<frase<<endl;
}

}

1 个答案:

答案 0 :(得分:2)

您以错误的方式使用DelegateHandler<int>* var = DelegateHandler<double>::CreateInstance<int>(...);

string::find返回:
-第一场比赛的第一个字符的位置。
-string::find,如果找不到匹配项。

因此,您的支票应与string::npos作比较。您可以像这样修改string::npos循环:

while

请参见demo here