【发布时间】:2012-01-28 19:34:05
【问题描述】:
我是 C++ 新手,需要您的帮助。
我的目标是在 c++ 中比较一些字符串并存储相同的字符串。 去做这个。我将字符串散列到 UINT,然后我将检查 UINTS 并存储相同的 UINT。例如.. 我有 2000 个文本文档,每个文档有 2 行。使用哈希映射,我将它们哈希到一堆 UINTS。然后我将相同的 UINTS 存储在一起。最后我想检索相同的文件。所以,我使用Cmap。它将 UINTS 映射到他们的文档。我将执行此过程以提高内存效率。
我正在使用此代码:
CString keyExample("This is a sample text");
LPCTSTR lpStr = (LPCTSTR)keyExample;
CMapStringToOb hashObject;
UINT keyExampleTemp=hashObject.HashKey(lpStr);
cout<< keyExampleTemp<<endl;
CMap<UINT, UINT, CString, CString*> mymap;
CString value=mymap[keyExampleTemp];
cout<<value;
如果我注释最后 3 行,我会得到一个 UINT 表示“这是一个示例文本”,但是如果我取消最后 3 行的注释,我会得到这个错误,这意味着问题出在 cmap 上
错误 C2664:
'CMap<KEY,ARG_KEY,VALUE,ARG_VALUE>::SetAt':无法将参数 2 从'CString'转换为'ATL::CStringT<BaseType,StringTraits> '
【问题讨论】:
-
如果您是 C++ 新手,请帮自己一个忙,并尽可能远离 MFC 的古老 C-with-classes 遗物。
-
请参阅这篇文章,了解如何定义使用
CString的CMap以及CMap模板参数的含义。 stackoverflow.com/questions/32019236/… 建议使用LPCTSTR而不是CString *以及为什么带有支持文章的链接。