Qt 从QFile的返回行拆分QString

Qt 从QFile的返回行拆分QString,qt,qt4,qstring,qfile,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 fo

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

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();
QFile-df(“../MyData/visit.DAT”);
如果(!df.open(QIODevice::ReadOnly | QIODevice::Text)){
qDebug()您将整个列表“splitData”放在qDebug中。其中包含两项“USA”和“Florida”。您的代码很可能按照您希望的方式工作,但您误解了输出。
尝试:


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

QString country, city;
txStream » country » city;

我想,通过在split方法中传递tab字符,在
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++;
        }
    }
QTextStream-txStream(&df);
而(!txStream.atEnd()){
QString text=txStream.readLine();
QStringList splitD=text.split(“\t”);
如果(i%2==0){

qDebug()我不明白这个问题。split()是正确的方法。什么是“我两个词都有一行”确切的意思是?我得到:USA佛罗里达行;但不是USA,然后Floriday您的
QStringList
splitD
但您正试图打印一个名为
splitData
的变量。这是一个输入错误吗?在您的问题中?如果是,请确保您显示的代码仍然显示相同的行为。我得到崩溃。在输出时,我得到了(首先是qDebug):美国佛罗里达,然后是应用程序崩溃奇怪,字符编码可能是原因吗?你能试试text.toLatin1().split()吗?
QString country, city;
txStream » country » city;
  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++;
        }
    }