Search code examples
qtuser-interfaceqtextedit

Comparison in text file using Qt


I am beginner in UI design using Qt. My project now is doing comparison. For example: if I have 2 text file.

enter image description here

How can I compare the number line by line? Because I have so many text file like this, and I need compare them on by one.What I can do now is only read the text file by line order. Thank you so much!


Solution

  • The procedure is simple

    1. Read both files (always make sure they are opened successfully)
    2. Read files line by line and convert strings to numbers for comparison.
    3. Quit if there is no data left.

    Moreover, you need to make sure that the format of files is consistent otherwise, you need to make sure what you manipulate is a real number. I assume numbers are integers but of course you can change it. Extra precautions are required in this kind of project. I will leave it to you. The simplified code for the above procedure is

    #include <QString>
    #include <QFile>
    #include <QDebug>
    #include <QTextStream>
    
    
    int main()
    {
        QFile data1("text1.txt");
        if (!data1.open(QIODevice::ReadOnly | QIODevice::Text)){
            qDebug() << "text1.txt file can't be opened...";
            return -1;
        }
    
        QFile data2("text2.txt");
        if (!data2.open(QIODevice::ReadOnly | QIODevice::Text)){
            qDebug() << "text2.txt file can't be opened...";
            return -1;
        }
    
    
        QTextStream in1(&data1), in2(&data2);
    
        while ( !in1.atEnd() && !in2.atEnd() ) {
            QString num1 = in1.readLine();
            QString num2 = in2.readLine();
            if ( num1.toInt() > num2.toInt() )
                qDebug() << num1.toInt() << ">" << num2.toInt(); 
    
            // do the rest of comparison
        }
    
        return 0;
    }
    

    Now in my case, the txt files are

    text1.txt

    1
    2
    3
    4
    

    text2.txt

    3
    5
    1
    6
    

    The output is

    3 > 1
    

    Edit: the OP is looking for the difference and its sum.

    int sum(0);
    while ( !in1.atEnd() && !in2.atEnd() ) {
        QString num1 = in1.readLine();
        QString num2 = in2.readLine();
        int result = num1.toInt() - num2.toInt();
        qDebug() << num1.toInt() << "-" << num2.toInt() << " = " << result;
        sum += result;
     }
     qDebug() << "sum = " << sum;