我正在使用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;
}