6

我正在尝试将一些矢量数据的名称与struct. 我想看看哪个名字在qDebug()

为了更清楚:

const std::string& testName = "asdfqwer";
qDebug() << testName;

它在构建中给出错误消息:

Error: no match for 'operator<<' in 'qDebug()() << testName'

我没有更改const std::string&类型的选项。你能在不改变类型的情况下帮我解决这个问题吗?

4

2 回答 2

16

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

于 2014-12-08T13:14:58.163 回答
7

如果您需要在代码中经常将 std::string 写入 qDebug() ,则可以全局实现此函数(例如在 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;
}
于 2014-12-08T14:45:44.630 回答