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);
}
我調試,並獲得在NUM整數。但是,在寫入文件時,我得到三個空格,然後是最後一次發送的整數的ASCII等號。我想要一個新行上的所有整數列表。我寫的是: out << temp_received; – SamSong
temp_received就是我在你的例子中給出的num的名字。 – SamSong
您應該將整數轉換爲int,然後寫入:QString numStr = QString(「%1」)。arg(num);寫上:out << numStr; – sithereal