MFC中的CStringList

MFC中的CStringList,mfc,Mfc,我用2个CStringList对象进行编码。每个都有自己的数据,例如一个有名字,另一个有电话号码,两者都是同步的,也就是说,如果有电话号码,就有名字,反之亦然 现在,我有两个组合框,其中显示了姓名和相应的电话号码。名称组合框已排序,因此这两个框之间的同步将受到影响。因此,为了进行排序,我做了以下工作: int-aComboElementNo=myNameComboBox.GetCount(); 如果(aComboElementNo>=1) { for(int-aIndex=0;aIndex

我用2个CStringList对象进行编码。每个都有自己的数据,例如一个有名字,另一个有电话号码,两者都是同步的,也就是说,如果有电话号码,就有名字,反之亦然

现在,我有两个组合框,其中显示了姓名和相应的电话号码。名称组合框已排序,因此这两个框之间的同步将受到影响。因此,为了进行排序,我做了以下工作:


int-aComboElementNo=myNameComboBox.GetCount();
如果(aComboElementNo>=1)
{
for(int-aIndex=0;aIndex

当我执行此操作时,我在myPhoneComboBox中获得了名称,而不是phonenos

现在我有两个QN:

  • 当我访问电话列表时,为什么会在姓名列表中显示姓名?这不是一个漏洞,因为我可以使用其他变量访问其他变量数据

  • 如何对第二个列表进行排序


  • 我希望你使用的是CStringArray,而不是CStringList。 您需要使用FindIndex而不是Find,因为Find将返回对象位置而不是索引计数。。。。 要使用数组获取元素,只需使用[]运算符。
    如果仍要使用CStringList,则通过迭代器在一个列表中找到字符串的第一个匹配项的索引计数,并使用该索引计数的FindIndex获取第二个列表的position对象,以便使用GetAt将其添加到第二个列表。

    为什么有两个单独的列表?为什么不用一组同时包含姓名和电话号码的结构呢?

    请原谅,这是一种疯狂的、愚蠢的查找姓名的方式。它假定名称是唯一的。上帝保佑我,我不得不处理这些事情,名字字段永远不应该被视为唯一的,它是血腥的危险。问问我爸爸Baash05 Sr

    我假设当应用程序添加到组合框时,会有一个ID或一些数据集。请在地图上用这个。我的猜测是程序员将数据设置为名称的ID或指向包含名称的对象的指针。(个人对象/业务对象/学生对象…)

    如果添加姓名的代码没有增加区分乔治·福曼和他的任何孩子的方法,那么就向老板争辩,它的实现应该改变,因为上帝保佑它应该改变

    int aComboElementNo = myNameComboBox.GetCount();
    for( int aIndex = 0; aIndex < aComboElementNo; aIndex++ )
    {
        int nameLocal = myNameComboBox.GetItemData( aIndex);
        myPhoneComboBox.InsertString(aIndex, aPhoneList[namelocal] );
    }
    
    int-aComboElementNo=myNameComboBox.GetCount();
    for(int-aIndex=0;aIndex
    未获取u…..我没有索引(即使我有myNameComboBox中的索引,stringlist和combobox元素在combobox元素排序时不同步…)我使用的是CStringList而不是CList或CArray:(CList.Find不返回数字值(0,1,2,3,…),它是一个对象。它需要用于相同的列表。CArray.Find也执行相同的操作。相反,CArray.FindIndex返回索引(0,1,2,…)。我希望你现在明白了。然后用CStringArray而不是CStringListhmm,问题是如果我将其更改为CStringArray,许多其他地方也会受到影响。这两个列表是CStringList对象。我认为你的问题缺乏太多的上下文。你想用什么方法来做这件事?你想做什么?问题是t姓名列表已经实施。我不允许更改实施的内容…:(老兄,我提到了姓名和电话号码作为一个例子,不要把它们当回事。在我们的项目中,我们使用的是不同的东西,它们是独一无二的。请仔细阅读问题,并在回答之前理解提问者的意思。。。。
    int aComboElementNo = myNameComboBox.GetCount();
    for( int aIndex = 0; aIndex < aComboElementNo; aIndex++ )
    {
        int nameLocal = myNameComboBox.GetItemData( aIndex);
        myPhoneComboBox.InsertString(aIndex, aPhoneList[namelocal] );
    }