使用 toStdString().c_str() 的注意事项

    QString str = "Hello, world!";
    // 错误用法
    const char *szCopy = str.toStdString().c_str();
    qDebug() << szCopy; // 输出空

    // 正确用法
    QString strCopy = str.toStdString().c_str();
    qDebug() << strCopy; // 输出"Hello, world!"

把 toStdString().c_str() 赋值给 const char* szCopy,结果变成空,我们来看toStdString的返回值:

std::string QString::toStdString() const;

是一个临时变量,生命周期在分号后就结束了,所以输出szCopy的时候,内容是不确定的。

posted @ 2025-04-23 17:01  上车去广西  阅读(88)  评论(0)    收藏  举报