Qt数组QString

时间:2012-09-29 11:23:56

标签: qt qstring qbytearray

我通过selectall查询从db获得结果,我希望将结果保存在数组中并通过套接字发送。

db.open();

QSqlQuery *selectall = new QSqlQuery(db);
selectall->prepare("select * from phone_table");
selectall->exec();
selectall->first();
QString result;
QByteArray arrayresult;
int index = 0;
while (selectall->next())
{
    index += 1;
    // qint16 id = selectall->value(0).toString();
    QString name_ = selectall->value(1).toString();
    QString surname = selectall->value(2).toString();
    QString phone_number = selectall->value(3).toString();
    result = "*"+ name_+"*"+surname+"*"+phone_number;
    arrayresult[index] = result;
}

我得到这个错误二进制'=':找不到运算符,它采用'const char [16]'类型的右手操作数

3 个答案:

答案 0 :(得分:0)

您正在尝试将QByteRef设置为QString。

我想你可能想要一个QList和arrayresult.append(结果)。 或者如果你想要一个QByteArray与所有结果的concat一起使用arrayresult + = result。

答案 1 :(得分:0)

您可以构建要初始化QString的{​​{1}}。要转换为QByteArrayQString,您可以执行

QByteArray

如果编码是Latin1。

您也可以使用追加

QByteArray array_ = string_.toLatin1();
  

这是一个重载功能。

     

将字符串str追加到此字节数组。 Unicode数据是   使用QString :: toAscii()转换为8位字符。

     

如果QString包含非ASCII Unicode字符,请使用此字符   功能可能导致信息丢失。你可以禁用它   通过在编译时定义QT_NO_CAST_TO_ASCII来起作用   应用。然后,您需要调用QString :: toAscii()(或   QString :: toLatin1()或QString :: toUtf8()或QString :: toLocal8Bit())   显式,如果你想将数据转换为const char *。

QByteArray & QByteArray::append ( const QString & str ) append运算符相同。

答案 2 :(得分:0)

您可以使用toLatin1()的{​​{3}}功能执行以下操作。

// ...

QString result = QString( "*%1*%2*%3" ).arg( name_ )
                                       .arg( surname )
                                       .arg( phone_number );

QByteArray resultArray = result.toLatin1();
// Or ...
// QByteArray resultArray = result.toLocal8Bit();
// QByteArray resultArray = result.toUtf8();

您将使用QList< QByteArray >来包含结果,或者您可以QString将最后一个结果项append添加到最终结果对象中。