CTokenizer 类






3.82/5 (10投票s)
一个可用于 CString 的简单分词类
引言
有时您需要在 MFC 项目中使用 strtok,但它有两个主要限制:
- 无法同时用于分割多个字符串。
- 不方便与 CStrings安全地使用。
为了克服这些限制,我编写了 CTokenizer。
用法
它非常易于使用,如下面的代码所示:
CTokenizer tok(_T("A-B+C*D-E"), _T("-+")); CString cs; while(tok.Next(cs)) TRACE2("Token: '%s', Tail: '%s'\n", (LPCTSTR)cs, (LPCTSTR)tok.Tail());
前面的代码产生以下输出:
Token: 'A', Tail: 'B+C*D-E'
Token: 'B', Tail: 'C*D-E'
Token: 'C*D', Tail: 'E'
Token: 'E', Tail: ''
如您所见,这并非什么高深的技术!这是一个非常简单且方便的类。
总结:
- 创建一个 CTokenizer类型的对象,并将要分割的字符串和分隔符作为参数传递。
- 调用 Next(),直到它返回false。
- 如果您需要更改分隔符,请调用 SetDelimiters()。
- 如果您需要未分割部分的字符串,请调用 Tail()。
更新
- 2001年10月22日 使用 std::bitset代替std::vector。减少了内存需求并提高了性能。
- 2001年10月22日 修复了与 ASCII 字符 127 以上相关的问题。John Simpsons 报告了此问题。


