에 우리는 정말 코드를 작성을 볼 방법 당신은 QDataStream을 만들 수 있습니다. 나는 다음과 같은 샘플을 시도하고,이 경우 함수는 아주 잘 작동 :
#include <QCoreApplication>
#include <QDebug>
#include <QDataStream>
#include <QBuffer>
void myFunc(QDataStream& in)
{
quint8 v;
in >> v;
qDebug() << v;
// Ok, I caught v value successfuly
QString s;
in >> s;
qDebug() << s;
// Didnt work :<
}
int main(int argc, char ** argv) {
QCoreApplication a(argc, argv);
QBuffer buffer;
buffer.open(QBuffer::ReadWrite);
// write test data into the buffer
QDataStream out(&buffer);
quint8 ival = 42;
QString sval = "Qt";
out << ival;
out << sval;
// read back data
buffer.seek(0);
myFunc(out);
return a.exec();
}
출력을 실행되는 경우 문자열이 QString
로 작성되지 않은 경우, 당신이 읽을 필요
$ ./App
42
"Qt"
괜찮습니다. 글을 쓰는 코드는 어떻게 생겼습니까? – cgmb
버퍼가 많은 것을 저장하고 있습니다. 문자열을 추출하려고 할 때 위치가 다음 opcode로 이동하지 않았습니다 –
어떻게 버퍼를 처음 버퍼에 씁니까? "문자열 길이가 2 바이트에 저장됩니다"라는 의미는 무엇입니까? (왜냐하면'QString'은 32 비트 값과 실제 UTF16 문자열이 저장되고 읽혀지기 때문입니다). – alexisdm