【问题标题】:Qt array QStringQt 数组 QString
【发布时间】:2012-09-21 01:30:00
【问题描述】:

我通过 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]”类型的右侧操作数的运算符

【问题讨论】:

    标签: qt qstring qbytearray


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您可以构建您想要初始化QByteArrayQString。然后从QString 转换为QByteArray,你可以这样做

      QByteArray array_ = string_.toLatin1();
      

      如果编码是 Latin1。

      您也可以使用附加

      QByteArray & QByteArray::append ( const QString & str )
      

      这是一个重载函数。

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

      如果 QString 包含非 ASCII Unicode 字符,使用这个 功能会导致信息丢失。您可以禁用此功能 通过在编译时定义 QT_NO_CAST_TO_ASCII 来发挥作用 应用程序。然后您需要调用 QString::toAscii() (或 QString::toLatin1() 或 QString::toUtf8() 或 QString::toLocal8Bit()) 如果要将数据转换为 const char *,请明确说明。

      append 的作用与 + 运算符相同。

      【讨论】:

        【解决方案3】:

        您可以使用@987654322@toLatin1() 函数执行以下操作。

        // ...
        
        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 > 来包含结果,或者您可以只将append 最后一个结果项添加到最终结果对象中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-11-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-11
          • 1970-01-01
          • 2017-11-14
          相关资源
          最近更新 更多