解析字符串/标记

时间:2011-05-08 06:31:39

标签: c++ string parsing

我想知道解析字符串的最有效方法是HTTP,FTP,SMTP,IMAP,IRC等协议,通过向服务器发送信息和读取响应来完成通信。

例如,假设我想解析典型的IRC消息。

    PING irc.example.com

我现在正在做的是将响应字符串分成标记,并迭代它们。如果令牌是“PING”,我的程序会调用pong函数。但是,目前,“解析”这些字符串仅仅包含一堆strcmp()s。

我很好奇任何替代的,更有效的'解析'数据的方式(我正在考虑像令牌的地图,所以我的程序可以很容易地查找它。)

2 个答案:

答案 0 :(得分:0)

为其定义语法,或者只是创建一个检测令牌的自动机。 this帖子中的示例。

答案 1 :(得分:0)

根据您想要支持的数量,您可以选择一些选项。在第一级是像你正在做的那样简单的标记化。这仅适用于非常有限的一组命令。接下来你有正则表达式,可以给你更多的灵活性。最后,你有一个完整的语法建议,这将允许最大的灵活性。

每一项的复杂程度都比上一次大。