将std :: string转换为QString

时间:2014-07-17 15:24:46

标签: c++ qt

我有一个如下所示的函数,我正在尝试打印QT中的值。

void myfunction(
    std::string&    Service,
    std::string&    Type,
    std::string&    Hostname,
    std::string&    Address,
    UNUM16      Port,
    std::map< std::string, std::string >& TxtList )
{
    qDebug() << "Hostname capacity is : " << Hostname.capacity();
    qDebug() << "Hostname is : " << QString::fromStdString(Hostname);
    qDebug() << "Port is : " << ntohs(Port);

    std::map< std::string, std::string >::iterator iter;
    iter = TxtList.find("FwVersion");

}

现在,当我运行该函数时,首先调试语句为string的容量打印正确的值。但是第二个调试语句不起作用,它只打印空字符串。而且当我在地图上查找时,应用程序就崩溃了。

我也尝试过QString :: fromUtf8(Hostname.c_str())函数,即使这样也无效

是否有转换值并在QT中打印?

1 个答案:

答案 0 :(得分:2)

来自qt documentation

  

QString QString :: fromStdString(const std :: string&amp; str)[静态]

     

返回str字符串的副本。给定的字符串将转换为   使用fromAscii()函数的Unicode。这个构造函数只是   如果Qt配置为启用了STL兼容性,则可用。

您不应该使用QString::fromUtf8(),因为std :: string不是UTF8编码的(除非您以某种方式将编码的字符串放在那里)