在标签之间提取字符串

时间:2011-12-28 16:03:07

标签: mfc tags extract atl cstring

如何在两个标签之间提取CString?

 <tag1>My Text</tag1>

我不想计算开始和结束位置然后使用Mid,也许有另一种更简单的方法使用STL?

1 个答案:

答案 0 :(得分:0)

免责声明:以下提示是badshould 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