比较 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]);
}
}
在此代码中 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]);
}
}