将结构插入多图 - >不工作

时间:2014-07-14 09:28:56

标签: c++ map struct stl multimap

我正在使用multimap处理数据,我首先定义了一个struct并将结构作为map的值。代码看起来像这样。

    while ((read = getline(&input, &size, fp)) != -1) {

        sid = mystrtok(input, '\t', &ptrptr);
        title = mystrtok(NULL, '\t', &ptrptr);
        r1  = mystrtok(NULL, '\t', &ptrptr);
        r2 = mystrtok(NULL, '\t', &ptrptr);
        r3 = mystrtok(NULL, '\t', &ptrptr);
        uv = mystrtok(NULL, '\t', &ptrptr);

        struct title_map t_map = {title, r1, r2, r3, sid, uv};
        mCommerce.insert(make_pair(t_map.title, t_map));
    }

但毕竟,当我打印键和值时,如:

    for(multimap<string, struct title_map>::iterator cit = mCommerce.begin(); cit != mCommerce.end(); cit++){

    cout << (*cit).first << '\t' <<((*cit).second).title<<endl;

    }

整个键的值相同。键以正确的方式打印,但值只显示一个值。我不知道为什么会这样。

有谁知道问题是什么?

=============================================== ==========

mystrtok定义为:

 char* mystrtok(char *s1, char s2, char **lasts) //this is the mystrtok code
 {
     char *ret;
    char *pszFind; //

    if (s1 == NULL) {
         s1 = *lasts; //
     }
     if (s1 == NULL) {
         return NULL;
    }
     ret = s1;
    pszFind = strchr(s1, s2);
     if (pszFind != NULL) {
      *pszFind = '\0';
        *lasts = pszFind+1;
    }
    else {
        *lasts = NULL;
    }
     return ret;
}

0 个答案:

没有答案