我有一个如下所示的函数,我正在尝试打印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中打印?
答案 0 :(得分:2)
QString QString :: fromStdString(const std :: string&amp; str)[静态]
返回str字符串的副本。给定的字符串将转换为 使用fromAscii()函数的Unicode。这个构造函数只是 如果Qt配置为启用了STL兼容性,则可用。
您不应该使用QString::fromUtf8()
,因为std :: string不是UTF8编码的(除非您以某种方式将编码的字符串放在那里)