无法在qt中使用fromStdString

时间:2013-02-22 10:50:45

标签: qt

我无法使用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;
    }

2 个答案:

答案 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中数据的编码。这在任何情况下都是有利的,因为它使编码概念明确。