我正在尝试将一些矢量数据的名称与struct
一起使用。我想看看qDebug()
更清楚:
const std::string& testName = "asdfqwer";
qDebug() << testName;
它在构建中提供了错误消息:
Error: no match for 'operator<<' in 'qDebug()() << testName'
我没有更改const std::string&
类型的选项。你可以帮我解决这个问题而不改变类型吗?
答案 0 :(得分:6)
qDebug()
对std::string
一无所知,但它适用于const char*
。您可以找到合适的操作员here。您可以使用data()
或c_str()
来实现此目标,而Jiří Pospíšil
表示更好。
例如:
const std::string& testName = "asdfqwer";
qDebug() << testName.data() << testName.c_str();
您可以使用QString::fromStdString将std::string
转换为QString
。
答案 1 :(得分:4)
如果您需要在代码中经常将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;
}