如何将函数返回的char指针转换为字符串

How to convert char pointer returned from a function to string?

本文关键字:指针 转换 字符串 char 函数 返回      更新时间:2023-10-16

我正在Qt上玩套接字编程。我正在从服务器套接字读取char数组作为客户端套接字并返回结果作为char指针。

char* zgr_socket::sendMessage(){
    char buffer[5];
        while(1){
            bzero(buffer,2);
            n = read(sockfd,buffer,2);
            if (n < 0){  }
            close(sockfd);
            return buffer;
        }
}

我试图从这个方法中得到结果字符数组

void MainWindow::on_pushButton_2_clicked()
{
    char* returnedChar = mySocket->sendMessage();

    std::string aString(returnedChar);
    QString myQString = QString::fromStdString(aString);
    ui->label1->setText(myQString);
}

无论我尝试了什么,我都无法获得正确的字符数组。当我调试并查看return buffer行时,它返回正确的数组,但在某种魔力之后,我在aString变量中获得任意值。有人知道原因吗?

您返回指向char buffer[5];的指针,但缓冲区是函数的局部变量,因此在函数退出后它不再存在。现在有了一个悬浮指针。尝试从函数返回string,而不是char*,只是创建字符串作为返回语句的一部分。

有一个以char指针为参数的QString构造函数:

QString::QString(const char * str)

看到更多