【问题标题】:Choose 3 element out of 5 in CStringArray?在 CStringArray 的 5 个元素中选择 3 个元素?
【发布时间】:2015-04-15 05:59:10
【问题描述】:

在这段代码中,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]);
            }
        }

请帮助我如何做到这一点?

【问题讨论】:

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


    【解决方案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);
    }
    

    【讨论】:

    • 先生比你优秀很多。
    【解决方案2】:

    让我们“在纸上”做吧:

    假设您想从keepSelectedFiles 获取前三个字符串并将它们添加到keepFiles,然后您会

    1. 获取keepSelectedFiles中的第一个字符串并添加到keepFiles
    2. 获取keepSelectedFiles中的第二个字符串并添加到keepFiles
    3. 获取keepSelectedFiles中的第三个字符串并添加到keepFiles

    就是这样。

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

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

    就是这样。

    【讨论】:

      猜你喜欢
      • 2011-04-23
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多