3

私は C++ と Qt の初心者です。送信されたデータは ASCII 文字の文字列です ex:"jdlsfjffjf: XX" ここで番号 XX を抽出したいと思います。indexof を使用してそれを指す必要があることはわかっていますが、その方法はわかりません。方向性は?以下は、受信、表示、および書き込みを行うサーバー側のコードです。アプリケーションでは正しい数値を取得できますが、書き込み先のファイルには意味不明な文字が含まれています。

void Receiver::processPendingDatagrams()
    {
        while (udpSocket->hasPendingDatagrams()) {
            QByteArray datagram; //array of bytes
            datagram.resize(udpSocket->pendingDatagramSize()); //size it depending on sent data
            udpSocket->readDatagram(datagram.data(), datagram.size()); //read all
            statusLabel->setText(tr("%1 C").arg(datagram.data()));


            //writing stream to file
            bool ok;
            QFile file("file.dat");
            file.open(QIODevice::WriteOnly);
            QDataStream out(&file);   
            out << datagram.toInt(&ok, 10 );        
    }
4

1 に答える 1

5
int num = datagram.right(datagram.size() - datagram.indexOf(':') - 1).toInt();
于 2012-05-30T13:37:49.067 に答える