C++ 在CStringArray的5个元素中选择3个元素?

C++ 在CStringArray的5个元素中选择3个元素?,c++,winapi,visual-studio-2013,mfc,C++,Winapi,Visual Studio 2013,Mfc,在此代码中,keepselected文件有5个文本文件。我想选择其中的3个并添加到另一个数组keepfile中。计数只是用户的输入。如果用户在文本框中选择3,则计数为3,任何数字等 for (int i = 0; i < keepSelectedFiles.GetSize(); i++) { for (int i = 0; i < count; i++) { keepFiles.Remov

在此代码中,keepselected文件有5个文本文件。我想选择其中的3个并添加到另一个数组keepfile中。计数只是用户的输入。如果用户在文本框中选择3,则计数为3,任何数字等

for (int i = 0; i < keepSelectedFiles.GetSize(); i++)
        {
            for (int i = 0; i < count; i++)
            {
                keepFiles.RemoveAt(keepFiles.IsEmpty());
                keepFiles.Add(keepSelectedFiles[i]);
                testbox6.AddString(keepFiles[i]);
            }
        }
for(int i=0;i
请帮助我如何做到这一点?

让我们“在纸上”做到:

假设您想从
keepSelectedFiles
中获取前三个字符串,并将它们添加到
keepFiles
,那么

  • 获取
    keepSelectedFiles
    中的第一个字符串,并添加到
    keepFiles
  • 获取
    keepSelectedFiles
    中的第二个字符串,并添加到
    keepFiles
  • 获取
    keepSelectedFiles
    中的第三个字符串,并添加到
    keepFiles
  • 就这些

    要将其转换为代码,您需要创建一个循环,从
    0
    2
    (包含)迭代三次(
    count
    ),并将该数字用作
    保留选定文件的索引。因此,生成的代码如下所示

    for (int i = 0; i < count && i < keepSelectedFiles.GetSize(); ++i(
    {
        keepFiles.Add(keepSelectedFiles[i]);
    }
    
    for(int i=0;i
    就是这样。

    以下是实现这一点的方法(性能优化):

    if(计数<0)
    return;//错误处理
    if(计数对于(int i=0;iSir比你优秀得多)。
    
    if (count < 0)
      return; // error handling
    
    if (count < keepSelectedFiles.GetSize())
    {
      keepFiles.SetSize(count);
      for (int i=0; i<count; i++)
      {
          keepFiles[i] = keepSelectedFiles[i];
      }
    }
    else
    {
        keepFiles.Copy(keepSelectedFiles);
    }