从QFile的返回行拆分QString

时间:2012-04-08 12:24:51

标签: qt qt4 qstring qfile

如何拆分从文件中提取的文本?

USA Florida
Russia Murmansk
Germany Bonn

在美国,佛罗里达,俄罗斯,摩尔曼斯克......每个单词都应保存在QString中。 基本上我是这样做的:

QFile df("../MyData/visit.DAT");

    if (!df.open(QIODevice::ReadOnly | QIODevice::Text)) {

        qDebug()<<"Could not open file for reading";
        return;
    }

    QTextStream txStream(&df);
    while (!txStream.atEnd()) {

        QString text = txStream.readLine();
        QStringList splitD = text.split(" ");
        qDebug() << "-"<<splitD;
    }

    dataFile.close();

当我尝试用.value(index)从QStringList获取值时,我得到两个单词的同一行。 如何以正确的方式分割这些单词?

3 个答案:

答案 0 :(得分:0)

您将整个List“splitData”放到qDebug中。这包含两个项目“美国”和“佛罗里达”。您的代码很可能以您希望的方式工作,但您错误地解释了输出。 尝试:

qDebug() << splitData.at(0);
qDebug() << splitData.at(1);

这应该给你两行:

USA
Florida

答案 1 :(得分:0)

您可以使用操作员»或者您可以拆分。运算符»也可以连接。所以你可以这样做:

QString country, city;
txStream » country » city;

答案 2 :(得分:0)

我通过在split方法中传递制表符来弄明白,所以在QStringList中将从行返回两个单词,访问它们而不会崩溃应用程序。

  QTextStream txStream(&df);
    while (!txStream.atEnd()) {

        QString text = txStream.readLine();
        QStringList splitD = text.split("\t");

        if (i%2==0) {

            qDebug() << "Country : "<<splitD.at(0);
            i++;

        } else {

           qDebug() << "City : "<<splitD.at(1);
            i++;
        }
    }