问题
I am trying to use some vector data's name with struct. I am trying to get see which name in qDebug()
To be more clear:
const std::string& testName = "asdfqwer";
qDebug() << testName;
It gives en error message in build:
Error: no match for 'operator<<' in 'qDebug()() << testName'
I don't have options to change const std::string& type. Could you please help me to solve this issue without changing type?
回答1:
qDebug() does not know anything about std::string but it works with const char*. Appropriate operator you can find here. You can achieve this with data() or with c_str() which is better as Jiří Pospíšil said.
For example:
const std::string& testName = "asdfqwer";
qDebug() << testName.data() << testName.c_str();
Aslo you can convert std::string to QString with QString::fromStdString.
回答2:
If you need writing std::string to qDebug() often in your code, you can implement this function globally (for example in you 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;
}
来源:https://stackoverflow.com/questions/27358828/qdebug-not-showing-const-stdstring