我正在尝试将某些矢量数据的名称与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;
}