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

时间:2015-04-15 05:59:10

标签: c++ winapi visual-studio-2013 mfc

在此代码中,keepSelectedFiles有5个文本文件。我想选择其中的3个并添加到另一个数组keepFiles中。 count只是来自用户的输入。如果用户在文本框中选择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]);
            }
        }

请帮我怎么做?

2 个答案:

答案 0 :(得分:1)

这是实现它的方法(性能优化):

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);
}

答案 1 :(得分:0)

让我们在纸上做#34;

让我们说你要从keepSelectedFiles获取三个第一个字符串并将它们添加到keepFiles,然后你会

  1. 获取keepSelectedFiles中的第一个字符串并添加到keepFiles
  2. 获取keepSelectedFiles中的第二个字符串并添加到keepFiles
  3. 获取keepSelectedFiles中的第三个字符串并添加到keepFiles
  4. 这就是全部。

    要将其转换为代码,您将创建一个循环,该循环将迭代三次(count)次,从02(包括),并将该数字用作索引keepSelectedFiles。因此生成的代码看起来像

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

    那就是它。