1

如何拆分从文件中获取的此类文本?

USA Florida
Russia Murmansk
Germany Bonn

In USA,Florida,Russia,Murmansk ... 每个单词都应该保存在一个 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();

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

4

3 回答 3

0

您可以使用运算符 » 也可以拆分。运算符 » 也可以连接。因此,您可以执行以下操作:

QString country, city;
txStream » country » city;
于 2012-04-08T15:05:59.523 回答
0

I figure it out , by passing tab character in split method, so in QStringList will be returned two words from line, accesing them without crashing app.

  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++;
        }
    }
于 2012-04-08T16:36:26.197 回答
0

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

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

这应该给你两行:

USA
Florida
于 2012-04-08T14:32:14.577 回答