好吧,这是非常难以解释。我试图在这里写一个100行解释,看到我失败后我试图创建一个图像,以更好地解释它也失败了http://img208.imageshack.us/img208/7383/48821020.png找到一个字符串的多个类指针
这似乎是不可能的,因为它的复杂性非常高。在最原始的是,我需要为字符串的每个部分分配Id。目前,我可以给ID的一个字符串,例如:
He: hey
She: Hi
He: What's up
She: Not much, you?
He: I'm fine, i'm selling a <Scale Armor> wanna buy it?
She: Next time maybe.
我可以用CString szText = GetTextAtLine(3);
因为What's up
位于聊天的第三行函数返回What's up
。每行都有一个Id,Id是行号。每行还有一个指向名为CItemElem
的类的指针。 CItemElem包含有关项目的所有信息。
I通过使用以下函数CItemElem *pItem = GetItemAtLineId(5)
找到指针,它将返回存储在map<unsigned int,CItemElem*>mItemChat
处的指针,其中unsigned int
是行标识符。每当有人在聊天中聊天时,如果在聊天中输入了一个项目,则会将新元素插入到STL贴图中,并将其添加到行ID中。
CItemElem* CEditString::GetItemAtLineId(unsigned long uLine)
{
for(map<unsigned int,CItemElem*>::iterator it = m_mItemChat.begin(); it != m_mItemChat.end(); ++it)
{
if(uLine == it->first)
return(it->second);
}
return NULL;
}
因此,大家可以看到,我可以找到一个CItemElem
指针由行标识,但现在我的问题是我需要在字符串来定位多个项目,因为3项最多可以在输入的句子时间:
He: Hey guys i'm selling <Scale Boots> <Wooden Sword> <Water Helmet> cool items!
目前我一次只能在一个聊天句子中返回1个项目,因为我可以通过行ID找到该项目。在过去的几个小时里我一直在烘烤我的大脑,请赐教我如何能够在相同的句子ID返回多个项目。
非常感谢!
回报项目的载体使用
CLineElem*
? – nhahtdh 2012-07-10 03:01:17这是可能的。我不完全确定,但'map>'可能是您需要的。 –
nhahtdh
2012-07-10 03:06:05
它必须更具体,因为当用户将鼠标悬停在字符串的一部分上时,它必须显示项目信息(保存在CItemElem *处)。可以用一种方式存储多个项目,问题是找到鼠标悬停的项目是什么 –
2012-07-10 03:06:30