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