Как удалить подстроку в строке (qstring) в Qt - PullRequest
0 голосов
/ 21 сентября 2019

Есть ли в Qt функция, аналогичная delete () и copy () в Delphi.

Я читаю данные с устройства, подключенного к моему компьютеру через USB, и сохраняю их как QString.Каждая читаемая строка не одинакова (или обрывается даже при использовании readyRead).Я создал буферную строку, чтобы добавить эти «половинные строки» (например, string = «This» вместо «This is string #»), и теперь я хочу скопировать строку до «#», а затем удалить строкутак что, если будут добавлены новые "полужали", я могу сделать то же самое с ними.Код ниже - это то, что я пробовал

void MainWindow::readSerial()
{
    QByteArray serialData = port->readAll();
    serialBuffer += serialData;

    QByteArray serialString = serialBuffer.

    qDebug() << serialString;
    ui -> textEdit ->append(serialString);

    //serialBuffer.replace(serialString,"");
}

Приведенный выше код возвращает только пустую строку.

1 Ответ

1 голос
/ 21 сентября 2019
void MainWindow::readSerial()
{
    QByteArray serialData = port->readAll();
    serialBuffer += serialData;

    QString serialString = serialBuffer.mid(serialBuffer.indexOf("$"),serialBuffer.indexOf("\r\n"));

    qDebug()<< "index of \r\n" << serialBuffer.indexOf("\r\n");
    qDebug() << "SerialString" <<serialString;
    ui -> textEdit ->append(serialString);
    qDebug() << "SerialBuffer: " << serialBuffer;

    serialBuffer.replace(serialString + "\r\n","");

}

вышеуказанный код работает.Спасибо всем.

С уважением

...