Qchar *到char *转换

时间:2012-11-21 18:25:41

标签: c++ qt serial-port qchar

我正在构建一个用于监控串口数据的Qt Gui应用程序。我正在使用qextserialport库。这是我遇到的问题。

void MainWindow::onDataAvailable()
{
    QString data_ser,data_trimmed;
    port->readLine(data_ser.data(),0);
    data_trimmed = data_ser.trimmed();
    ui->textEdit->append(data_trimmed);
}

readLine方法的第一个参数应该是char*类型。如何将QChar*返回的data_ser.data()转换为char*。我本可以使用{{1}而不是std::string,但qt gui对象与QString更好地兼容,我也需要QString方法。

这是我得到的错误:

没有匹配成员函数来调用'readLine'。 第一个参数没有从'QChar *'到'char *'的已知转换。

如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

你不能,或者至少你不想(当然在C ++中你可以将QChar *转换为char *但是这不会使它工作)。只需将数据读入QByteArray,然后将其转换为QString。

答案 1 :(得分:2)

这有点棘手,因为你需要为readline()分配空间来复制。

您可以使用an initial size创建一个QString,但我个人会分配一个具有固定合理缓冲区大小的char *,然后从中创建QString - 它使您在调试时更加清晰。