qDebug() 不显示 const std::string&



我正在尝试将某些矢量数据的名称与struct一起使用。我正在尝试查看qDebug()中的哪个名称

更明确地说:

const std::string& testName = "asdfqwer";
qDebug() << testName;

它在构建中给出 en 错误消息:

Error: no match for 'operator<<' in 'qDebug()() << testName'

我没有更改const std::string&类型的选项。你能帮我解决这个问题而不改变类型吗?

qDebug()

std::string一无所知,但它适用于const char*。您可以在此处找到合适的运算符。你可以用data()c_str()来实现这一点,正如Jiří Pospíšil所说,这更好。

例如:

const std::string& testName = "asdfqwer";
qDebug() << testName.data() << testName.c_str();

同样,您可以使用QString::fromStdString将std::string转换为QString

如果你需要在代码中经常将 std::string 写入 qDebug(),你可以全局实现这个函数(例如在 main.cpp 中):

#include <QDebug>
#include <string>
QDebug& operator<<(QDebug& out, const std::string& str)
{
    out << QString::fromStdString(str);
    return out;
}
int main()
{
    std::string jau = "jau";
    qDebug() << jau;
    return 0;
}

相关内容

  • 没有找到相关文章

最新更新