qDebug()没有显示const std :: string&

时间:2014-12-08 13:13:20

标签: c++ string qt qdebug

我正在尝试将一些矢量数据的名称与struct一起使用。我想看看qDebug()

中的哪个名字

更清楚:

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

它在构建中提供了错误消息:

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

我没有更改const std::string&类型的选项。你可以帮我解决这个问题而不改变类型吗?

2 个答案:

答案 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::fromStdStringstd::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;
}