При выполнении программы я получаю сообщение "Остановлено подчиненное, потому что он получил сигнал от операционной системы". - PullRequest
0 голосов
/ 16 марта 2020

У меня есть этот код:

    int a = 0;
    std::vector<std::string> inputs;
    QString str = ui->textEdit->toPlainText();
    qDebug()<<str;
    std::string input = str.toStdString();
    int l = input.length();
    for (int i = 0; i<l; i++){

        if(input[i] == '\n'){
            i+=1;
            qDebug()<<i;
        }
        else{
            //int a = 0;
            std::string input1;
            while(input[i] != '\n'){
           input1[a] = (char)input[i];
           i++;
           a++;
            }
            inputs.push_back(input1);
        }

    }

   std::string b = inputs[0];
   QString qstr = QString::fromStdString(b);
   qDebug()<<qstr;

При попытке запустить приложение выходит с этой ошибкой:
The inferior stopped because it received a signal from the operating system.

Еще один неожиданный факт заключается в том, что при отладке int a = 6432, int i = 6441 и строки ввода, inpu1, b недоступны. Любые идеи о том, как решить эту проблему?

1 Ответ

1 голос
/ 16 марта 2020

Этот код выглядит неправильно

//int a = 0;
std::string input1;
while(input[i] != '\n'){
  input1[a] = (char)input[i];
  i++;
  a++;
}

(непроверенный код), это должно устранить хотя бы одну из проблем, а именно то, что вы индексируете input1 за пределами.

std::string input1;
while(input[i] != '\n'){
  input1.push_back((char)input[i]);
  i++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...