C++ 如何比较两个QStringList';s并显示结果?

C++ 如何比较两个QStringList';s并显示结果?,c++,qt,C++,Qt,我想知道如何比较2并以以下方式显示结果: 我有两个A和B 例如,在A中,我有10行,每行6个数字 例如,在B中,我有100行,每行6个数字 我想做的是:取B中的每一行,与A中的所有行进行比较。如果在一行比较中,所有6都等于int n6(例如),那么将加1。如果只有5相等,整数n5将加1,以此类推 我试过几件事,但都不管用。如果你能解释一下,我将不胜感激。首先计算每个字符串的匹配位数 int matchingDigits(QString str1, QString str2) { in

我想知道如何比较2并以以下方式显示结果:

我有两个A和B

  • 例如,在A中,我有10行,每行6个数字
  • 例如,在B中,我有100行,每行6个数字
我想做的是:取B中的每一行,与A中的所有行进行比较。如果在一行比较中,所有6都等于int n6(例如),那么将加1。如果只有5相等,整数n5将加1,以此类推


我试过几件事,但都不管用。如果你能解释一下,我将不胜感激。

首先计算每个字符串的匹配位数

int matchingDigits(QString str1, QString str2)
{
    int matches = 0;
    int minSize = str1.size() < str2.size() ? str1.size() : srt2.size();
    for (int pos = 0; pos < minSize; ++pos)
    {
        if (str1.at(pos) == str2.at(pos) ++matches;
    }
    return matches;
}

首先计算每个字符串的匹配位数

int matchingDigits(QString str1, QString str2)
{
    int matches = 0;
    int minSize = str1.size() < str2.size() ? str1.size() : srt2.size();
    for (int pos = 0; pos < minSize; ++pos)
    {
        if (str1.at(pos) == str2.at(pos) ++matches;
    }
    return matches;
}

首先计算每个字符串的匹配位数

int matchingDigits(QString str1, QString str2)
{
    int matches = 0;
    int minSize = str1.size() < str2.size() ? str1.size() : srt2.size();
    for (int pos = 0; pos < minSize; ++pos)
    {
        if (str1.at(pos) == str2.at(pos) ++matches;
    }
    return matches;
}

首先计算每个字符串的匹配位数

int matchingDigits(QString str1, QString str2)
{
    int matches = 0;
    int minSize = str1.size() < str2.size() ? str1.size() : srt2.size();
    for (int pos = 0; pos < minSize; ++pos)
    {
        if (str1.at(pos) == str2.at(pos) ++matches;
    }
    return matches;
}

使用
QSet
subtract()
count()
size()

例如,对于下一个列表:

  mOldList.append("1");
  mOldList.append("2");
  mOldList.append("3");
  mOldList.append("4");
  mOldList.append("5");
  mOldList.append("10");

  mNewList.append("1");
  mNewList.append("2");
  mNewList.append("3");
  mNewList.append("4");
  mNewList.append("5");
  mNewList.append("15");

QSet<QString> subtraction = mNewList.toSet().subtract(mOldList.toSet());
foreach (const QString &fileName, subtraction)
        qDebug() << " difference: "<<  fileName;
这意味着一个元素是不同的

  mOldList.append("1");
  mOldList.append("2");
  mOldList.append("3");
  mOldList.append("4");
  mOldList.append("5");
  mOldList.append("10");

  mNewList.append("1");
  mNewList.append("2");
  mNewList.append("3");
  mNewList.append("4");
  mNewList.append("115");
  mNewList.append("15");
两个要素不相同:

 difference:  "115" 
 difference:  "15"
或者另一种方式:

qSort(mNewList);
qSort(mOldList);

if(mNewList == mOldList){
    qDebug() << "same";
}
else{
    qDebug() << "not same";
}
qSort(mNewList);
qSort(mOldList);
if(mNewList==模具列表){

qDebug()使用
QSet
subtract()
count()
size()

例如,对于下一个列表:

  mOldList.append("1");
  mOldList.append("2");
  mOldList.append("3");
  mOldList.append("4");
  mOldList.append("5");
  mOldList.append("10");

  mNewList.append("1");
  mNewList.append("2");
  mNewList.append("3");
  mNewList.append("4");
  mNewList.append("5");
  mNewList.append("15");

QSet<QString> subtraction = mNewList.toSet().subtract(mOldList.toSet());
foreach (const QString &fileName, subtraction)
        qDebug() << " difference: "<<  fileName;
这意味着一个元素是不同的

  mOldList.append("1");
  mOldList.append("2");
  mOldList.append("3");
  mOldList.append("4");
  mOldList.append("5");
  mOldList.append("10");

  mNewList.append("1");
  mNewList.append("2");
  mNewList.append("3");
  mNewList.append("4");
  mNewList.append("115");
  mNewList.append("15");
两个要素不相同:

 difference:  "115" 
 difference:  "15"
或者另一种方式:

qSort(mNewList);
qSort(mOldList);

if(mNewList == mOldList){
    qDebug() << "same";
}
else{
    qDebug() << "not same";
}
qSort(mNewList);
qSort(mOldList);
if(mNewList==模具列表){

qDebug()使用
QSet
subtract()
count()
size()

例如,对于下一个列表:

  mOldList.append("1");
  mOldList.append("2");
  mOldList.append("3");
  mOldList.append("4");
  mOldList.append("5");
  mOldList.append("10");

  mNewList.append("1");
  mNewList.append("2");
  mNewList.append("3");
  mNewList.append("4");
  mNewList.append("5");
  mNewList.append("15");

QSet<QString> subtraction = mNewList.toSet().subtract(mOldList.toSet());
foreach (const QString &fileName, subtraction)
        qDebug() << " difference: "<<  fileName;
这意味着一个元素是不同的

  mOldList.append("1");
  mOldList.append("2");
  mOldList.append("3");
  mOldList.append("4");
  mOldList.append("5");
  mOldList.append("10");

  mNewList.append("1");
  mNewList.append("2");
  mNewList.append("3");
  mNewList.append("4");
  mNewList.append("115");
  mNewList.append("15");
两个要素不相同:

 difference:  "115" 
 difference:  "15"
或者另一种方式:

qSort(mNewList);
qSort(mOldList);

if(mNewList == mOldList){
    qDebug() << "same";
}
else{
    qDebug() << "not same";
}
qSort(mNewList);
qSort(mOldList);
if(mNewList==模具列表){

qDebug()使用
QSet
subtract()
count()
size()

例如,对于下一个列表:

  mOldList.append("1");
  mOldList.append("2");
  mOldList.append("3");
  mOldList.append("4");
  mOldList.append("5");
  mOldList.append("10");

  mNewList.append("1");
  mNewList.append("2");
  mNewList.append("3");
  mNewList.append("4");
  mNewList.append("5");
  mNewList.append("15");

QSet<QString> subtraction = mNewList.toSet().subtract(mOldList.toSet());
foreach (const QString &fileName, subtraction)
        qDebug() << " difference: "<<  fileName;
这意味着一个元素是不同的

  mOldList.append("1");
  mOldList.append("2");
  mOldList.append("3");
  mOldList.append("4");
  mOldList.append("5");
  mOldList.append("10");

  mNewList.append("1");
  mNewList.append("2");
  mNewList.append("3");
  mNewList.append("4");
  mNewList.append("115");
  mNewList.append("15");
两个要素不相同:

 difference:  "115" 
 difference:  "15"
或者另一种方式:

qSort(mNewList);
qSort(mOldList);

if(mNewList == mOldList){
    qDebug() << "same";
}
else{
    qDebug() << "not same";
}
qSort(mNewList);
qSort(mOldList);
if(mNewList==模具列表){


qDebug()谢谢你的回答,但我忘了说这将是一个彩票检查应用程序。你的方法有效,但当1;2;3;4;5;6与1;2;3;4;5;6相对时,它返回11(因为;我猜)当1;2;3;4;5;6对23;53;46;60;13;24时返回3。如何解决这个问题?我不知道。那么我如何才能将所有字符串相互比较?@Rafaelpsmed,我编辑了我的答案,添加了比较的基本结构。但是如果数字大于9,字符串比较不是最好的方法。你应该首先创建一个
QStringList
f或者每行,使用感谢您的回答,但我忘了说这将是一个彩票检查应用程序。您的方法有效,但当1;2;3;4;5;6与1;2;3;4;5;6相对时,它返回11(因为;我猜)当1;2;3;4;5;6对23;53;46;60;13;24时返回3。如何解决这个问题?我不知道。那么我如何才能将所有字符串相互比较?@Rafaelpsmed,我编辑了我的答案,添加了比较的基本结构。但是如果数字大于9,字符串比较不是最好的方法。你应该首先创建一个
QStringList
f或者每行,使用感谢您的回答,但我忘了说这将是一个彩票检查应用程序。您的方法有效,但当1;2;3;4;5;6与1;2;3;4;5;6相对时,它返回11(因为;我猜)当1;2;3;4;5;6对23;53;46;60;13;24时返回3。如何解决这个问题?我不知道。那么我如何才能将所有字符串相互比较?@Rafaelpsmed,我编辑了我的答案,添加了比较的基本结构。但是如果数字大于9,字符串比较不是最好的方法。你应该首先创建一个
QStringList
f或者每行,使用感谢您的回答,但我忘了说这将是一个彩票检查应用程序。您的方法有效,但当1;2;3;4;5;6与1;2;3;4;5;6相对时,它返回11(因为;我猜)当1;2;3;4;5;6对23;53;46;60;13;24时返回3。如何解决这个问题?我不知道。那么我如何才能将所有字符串相互比较?@Rafaelpsmed,我编辑了我的答案,添加了比较的基本结构。但是如果数字大于9,字符串比较不是最好的方法。你应该首先创建一个
QStringList
f或者每一行,用谢谢你的回答,但我如何计算这个差异?@Rafaelpsmed你的差异在QSet中,所以只需调用count()方法进行减法运算。它返回QSet中的元素数,但这是您正在寻找的一个数字。谢谢,它起作用了。但是我如何比较QPlainText B中的第一行和QPlainText a中的所有行?然后比较B中的第二行和a中的所有行,依此类推?谢谢您的回答,但我如何计算这一差异?@Rafa请说明QSet中存在的差异,因此只需调用count()方法进行减法运算。它返回QSet中的元素数,但这是您正在寻找的一个数字。谢谢,它起作用了。但是我如何比较QPlainText B中的第一行和QPlainText a中的所有行?然后比较B中的第二行和a中的所有行,依此类推?谢谢您的回答,但我如何计算这一差异?@Rafa请说明QSet中存在的差异,因此只需调用count()方法进行减法运算。它返回QSet中的元素数,但这是您正在寻找的一个数字。谢谢,它起作用了。但是我如何比较QPlainText B中的第一行和QPlainText a中的所有行?然后比较B中的第二行和a中的所有行,依此类推?谢谢您的回答,但我如何计算这一差异?@Rafa请说明QSet中存在的差异,因此只需调用count()方法进行减法运算。它返回QSet中的元素数,但这是您正在查找的数字。谢谢,它起了作用。但是我如何将QPlainText B中的第一行与Q中的所有行进行比较