1

我无法使用来自StdString 的函数。在 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;
    }
4

2 回答 2

2

即使 Qt 配置了 -no-stl 您也可以与 std::string 和容器交互,它只会禁用一些语法糖。例如,您可以使用 QString::fromLatin1(some_std_string.c_str(), some_std_string.size()) 或 QString::fromUtf8(...) 或 fromLocal8bit(...),具体取决于 std::细绳。这在任何情况下都可以说是有利的,因为它使编码转换明确。

于 2013-02-23T10:21:47.843 回答
2

默认情况下会编译 STL 支持(至少在您自己构建时)。

除非我不知道在 4.8 中发生了什么变化,否则 fromStdString 是 QString 的静态成员,所以你应该这样称呼它

monthsArr[i] = QString::fromStdString(read);

仅在全局命名空间中调用 fromStdString 不会在 4.7.3 下编译。

于 2013-02-22T12:01:58.837 回答