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 报告了此问题。