【问题标题】: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,然后您会
- 获取
keepSelectedFiles中的第一个字符串并添加到keepFiles
- 获取
keepSelectedFiles中的第二个字符串并添加到keepFiles
- 获取
keepSelectedFiles中的第三个字符串并添加到keepFiles
就是这样。
要将其转换为代码,您需要创建一个循环,该循环将迭代三 (count) 次,从 0 到 2(含)并将该数字用作 keepSelectedFiles 的索引。所以生成的代码看起来像
for (int i = 0; i < count && i < keepSelectedFiles.GetSize(); ++i(
{
keepFiles.Add(keepSelectedFiles[i]);
}
就是这样。