libc ++ abi.dylib: завершается с необработанным исключением типа std :: out_of_range: ошибка basic_string - PullRequest
1 голос
/ 05 ноября 2019

Когда я запускаю код сначала, ошибки нет. После того, как я наберу Test string, затем I a a, это даст мне:

libc++abi.dylib: terminating with uncaught exception of type std::out_of_range: basic_string

Я не знаю, касается ли это строковых функций или моего ввода.

ps Эта программа предназначена для удаления, вставки и замены букв в строке

Мой код ниже

using namespace std;

string str;
bool flag = true;

void del(char p)
{
    int pos = str.find(p);
    if (pos != string::npos)
    {
        str.erase(pos,1);
        return ;
    }
    else
    {
        cout << "N" << endl;
        flag = false;
    }
}

void ins(string p1, string p2)
{
    int pos = str.find(p1[0]);
    if (pos == string::npos)
    {
        cout << "N" << endl;
        flag = false;
        return ;
    }
    int newpos = pos;
    while (pos != string::npos)
    {
        pos = str.find(p1,newpos);
        newpos = pos + 1;
    }
    str.insert(pos,p2);
    return ;
}

void repl(string p1, string p2)
{
    int pos = 0;
    int find = 0;
    find = str.find(p1[0],pos);
    if (find == string::npos)
    {
        cout << "N" << endl;
        flag = false;
        return ;
    }
    while (true)
    {
        find = str.find(p1[0],pos);
        if (find != string::npos)
        {
            str[find] = p2[0];
            pos = find + 1;
        }
        else
        {
            break;
        }
    }
    return ;
}

int main()
{
    getline(cin,str);
    char a;
    cin >> a;
    //cout << a << endl;
    if (a == 'D')
    {
        char p1;
        cin >> p1;
        del(p1);
    }
    else if (a == 'I')
    {
        string p1,p2;
        cin >> p1 >> p2;
        ins(p1,p2);
    }
    else if (a == 'R')
    {
        string p1,p2;
        cin >> p1 >> p2;
        repl(p1,p2);
    }
    if (flag)
    {
        cout << str << endl;
    }
    return 0;
}

Я использую VS Code на Mac. Я не знаю, поможет ли это. Я не знаю, что я могу набрать, но он говорит, что мой пост в основном кодовый, и мне нужно добавить больше деталей ......

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...