繁体   English   中英

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

[英]qDebug() not showing const std::string&

我正在尝试将一些矢量数据的名称与struct 我试图在qDebug()查看哪个名称

更清楚一点:

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

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

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::fromStdStringstd::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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM