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

时间:2015-08-17 18:15:20

标签: c++ arrays qt pointers

我在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;
        }
}

我正在尝试从此方法中获取生成的char数组

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


    std::string aString(returnedChar);
    QString myQString = QString::fromStdString(aString);

    ui->label1->setText(myQString);
}

无论我尝试过什么,我都无法获得正确的char数组。当我调试return buffer行时,它会返回正确的数组,但在某种魔法之后,我会在aString变量中得到任意值。请问有人能看到原因吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:-1)

有一个QString构造函数,它将char指针作为参数:

QString::QString(const char * str)

see more