【发布时间】:2014-01-16 11:13:11
【问题描述】:
我必须使用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());应该可以工作。 -
QString接受const char *。无需特意假装它不是恒定数据。 -
@LaszloPapp 奇怪的是,所有这些版本都有相同的“空”字符串。我认为我调用的函数中的
const_cast<char *>存在问题。但我无权编辑该函数以返回std:string或正常char * -
在这种情况下,我将函数输出(
getData()的结果)保存到一个变量中,并使用调试器检查该函数是否真的返回了一个有效的字符串。然后继续转换为 QString。它必须转换,因为 QString 有一个合适的构造函数 (qt-project.org/doc/qt-4.8/qstring.html#QString-8)。正如克里斯所说,尝试不进行强制转换,只需使用const char*。 -
我开始认为 _foo 在周围的代码中没有正确设置。否则我无法解释。 :-)
标签: c++ qt qstring qtcore const-cast