我必须使用类型为const char*
的函数输出结果,并将其转换为QString
。
注意:在该函数内部,以下代码行可返回const char*
。
char* ClassA::getData() const{
return const_cast<char *> (_foo.c_str());
}
其中_foo
是std::string
类型。
我尝试使用以下代码行,但总是得到空字符串(实际上不是空的,但只包含换行符并忽略所有其他字符)。
QString foo1 = QString(temp.getData());
QString foo2 = QString::fromLocal8Bit(temp.getData());
QString foo3 = QString(QLatin1String(temp.getData()));
QString foo4 = QString::fromAscii(temp.getData());
QString foo5 = QString::fromUtf8(temp.getData());
QString foo5 = QString::fromUtf8(temp.getData());
应该可以工作。 - László PappQString
接受const char *
。不需要刻意假装它不是常量数据。 - chrisconst_cast<char *>
。但是我没有权限编辑该函数以返回std:string
或普通的char *
。 - Mahmoud HassangetData()
的结果)保存到一个变量中,并使用调试器检查该函数是否确实返回有效的字符串。然后再进行转换为QString
。必须转换,因为QString
具有适当的构造函数(http://qt-project.org/doc/qt-4.8/qstring.html#QString-8)。正如Chris所说,尝试不使用强制转换,只使用`const char *`。 - Sceptical Jule