我无法使用fromStdString函数。 在qt助手中说,“只有在Qt配置为启用了STL兼容性的情况下,此运算符才可用。”但我不知道如何启用此功能。 请提供解决方案。
int main(int argc, char *argv[])
{
std::string read;
QString monthsArr[12];
QStringList monthlist;
std::ifstream readfile;
readfile.open("/home/pcamdin/practice/qtcpp/qtprogs/qtcpp/months.txt");
for(int i=0; i<6; i++)
{
readfile >> read;
monthsArr[i] = fromStdString(read);
monthlist << monthsArr[i];
qDebug() << i+1 << ": " << monthsArr[i];
}
qDebug() << "the first " << monthlist.size() << " months of the year are " << monthlist;
}
答案 0 :(得分:2)
默认情况下编译STL支持(至少在您自己构建时)。
除非我不知道4.8中的某些内容发生了变化,否则fromStdString是QString的静态成员,所以你应该像调用它一样
monthsArr[i] = QString::fromStdString(read);
在全局命名空间中简单地调用fromStdString不会在4.7.3下编译。
答案 1 :(得分:2)
即使Qt配置了-no-stl,你也可以与std :: string和容器进行交互,它只会禁用一些语法糖。你可以,例如使用QString :: fromLatin1(some_std_string.c_str(),some_std_string.size())或QString :: fromUtf8(...)或fromLocal8bit(...),具体取决于std :: string中数据的编码。这在任何情况下都是有利的,因为它使编码概念明确。