如何在两个标签之间提取CString?
<tag1>My Text</tag1>
我不想计算开始和结束位置然后使用Mid,也许有另一种更简单的方法使用STL?
答案 0 :(得分:0)
免责声明:以下提示是bad和should not be used in production code。我假设你只是想快速进行测试。
使用正则表达式匹配标记。 Microsoft provides this in CAtlRegExp。如果您使用的是Visual Studio 2008或更高版本,download ATL here。然后,只需在下面的代码中提供myString
:
#include "atlrx.h"
CAtlRegExp<> regex;
VERIFY( REPARSE_ERROR_OK == regex.Parse("<tag1>(.*)</tag1>") );
CAtlREMatchContext<> mc;
if (!regex.Match(myString, &mc)) {
// no match found
} else {
// match(es) found
for (UINT nGroupIndex = 0; nGroupIndex < mc.m_uNumGroups; ++nGroupIndex) {
const CAtlREMatchContext<>::RECHAR* szStart = 0;
const CAtlREMatchContext<>::RECHAR* szEnd = 0;
mc.GetMatch(nGroupIndex, &szStart, &szEnd);
ptrdiff_t nLength = szEnd - szStart;
CString text(szStart, nLength);
// now do something with text
}
}
免责声明2:你真的应该使用an XML parser library instead。