比较 CStringArray 元素?

Compare CStringArray element?

在此代码中 keepSelectedFiles 包含 5 个文本文件。 keepFiles 包含来自 keepSelectedFiles 的 3 个文本文件。我只想比较这两个数组,然后从 keepSelectedFiiles 中删除 3 keepFiles。然后 keepSelectedFiles 中只剩下 2 个文件。此代码无效。

 for (int i = 0; i < keepSelectedFiles.GetSize(); i++)

{
    testbox4.AddString(keepSelectedFiles[i]);

    CString s1 = keepSelectedFiles[i];
    CString s2 = keepFiles[i];
    for (int i = 0; i < keepFiles.GetSize(); i++)
    {
        if (s1.Compare(s2) != 0)
        {
            junkFiles.Add(keepSelectedFiles[i]);
        }
    }
}

有人知道如何解决这个问题吗?

CString s2 = keepFiles[i];

移动上面的行并将此行放在内部for循环中。

你可以试试这个代码

for (int i = 0; i < keepSelectedFiles.GetSize(); i++)

{    
    bool flag = false;
    CString s1 = keepSelectedFiles[i];
    for (int j = 0; j < keepFiles.GetSize(); j++)// you can use different variable name
    {                                            //so there will be no confusion
        CString s2 = keepFiles[j];
        if (s1.Compare(s2) == 0)           // if s1 equal to s2
        {
            flag = true;
            break;
        }
     }

        if(!flag){
               junkFiles.Add(keepSelectedFiles[i]); // or you can pass s1 here
               keepSelectedFile.RemoveAt(i); // remove index value
               i--;
         }
         else // first empty textbox4 before this loop
            testbox4.AddString(keepSelectedFiles[i]);  // update textbox  value             

}

您不需要 2 个 for 循环:

for (int i = 0,  j=0; i < keepSelectedFiles.GetSize(); i++)

{    
    CString s1 = keepSelectedFiles[i];
    CString s2 = keepFiles[j];
    if (s1.Compare(s2) != 0)
    {
                junkFiles.Add(keepSelectedFiles[i]);
     }
     else
     {
           ++j;
           testbox4.AddString(keepSelectedFiles[i]);
     }
 }