好的,这很难解释。我试图在这里写一个 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.
我可以What's up
使用该函数返回,CString szText = GetTextAtLine(3);
因为What's up
它位于聊天的第三行。每行都有一个Id,Id就是行号。每行还有一个指向名为 的类的指针CItemElem
。CItemElem 包含有关项目的所有信息。
我使用以下函数定位指针CItemElem *pItem = GetItemAtLineId(5)
,它将返回存储在行标识符map<unsigned int,CItemElem*>mItemChat
所在位置unsigned int
的指针。每次有人在聊天中交谈时,如果在聊天中输入了一个项目,则一个新元素会插入到 STL 映射中,并带有它的 line 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
通过行 ID 定位一个指针,但现在我的问题是我需要在字符串中定位多个项目,因为一次最多可以在一个句子中输入 3 个项目:
He: Hey guys i'm selling <Scale Boots> <Wooden Sword> <Water Helmet> cool items!
目前,我一次只能在一个聊天语句中返回 1 个项目,因为我可以通过行 ID 找到该项目。过去几个小时我一直在敬酒,请启发我如何能够在同一个句子 ID 中返回多个项目。
非常感谢!