Я пытаюсь использовать имя некоторых векторных данных с 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();
Также вы можете конвертировать std::string
в QString
с QString :: fromStdString.
Если вам часто нужно писать 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;
}