2012-05-30 51 views
1

我是C++和Qt的初學者。發送的數據是一串ASCII字符,例如:「jdlsfjffjf:XX」,我想提取數字XX。我知道我應該使用indexof指向它,但不知道如何。任何方向?這是接收,顯示和寫入的服務器端代碼。我在應用程序中獲得正確的數字,但在我正在寫入的文件中有亂碼字符。如何使用toInt從Qt中的QByteArray中提取整數?

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
int num = datagram.right(datagram.size() - datagram.indexOf(':') - 1).toInt(); 
+0

我調試,並獲得在NUM整數。但是,在寫入文件時,我得到三個空格,然後是最後一次發送的整數的ASCII等號。我想要一個新行上的所有整數列表。我寫的是: out << temp_received; – SamSong

+0

temp_received就是我在你的例子中給出的num的名字。 – SamSong

+0

您應該將整數轉換爲int,然後寫入:QString numStr = QString(「%1」)。arg(num);寫上:out << numStr; – sithereal