解析字符串/标记
Parsing Strings/Tokens
我想知道对于HTTP,FTP,SMTP,IMAP,IRC等协议,最有效的字符串解析方式是什么,在这些协议中,通信是通过向服务器发送信息并读取响应来完成的。
例如,假设我想解析一个典型的 IRC 消息。
PING irc.example.com
我现在正在做的是将响应字符串划分为标记,并遍历它们。如果令牌是"PING",我的程序将调用 pong 函数。但是,目前,"解析"这些字符串仅由一堆strcmp()组成。
我很好奇任何替代的、更有效的"解析"数据的方法(我在想像令牌地图这样的东西,所以我的程序可以轻松查找它)。
为它定义一个语法,或者简单地创建一个自动机来检测你的令牌。这篇文章中的例子。
根据您想要支持的程度,您有几个选择。在第一级是简单的标记化,就像你正在做的事情一样。这仅适用于一组非常有限的命令。接下来,你有正则表达式,这可能会给你更多的灵活性。最后,您已经按照建议获得了完整的语法,这将允许最大的灵活性。
其中每一个的复杂性都比上一个更大。
相关文章:
- 标记字符串,接受CPP中给定字符集之间的所有内容
- 使用具有特殊字符的正则表达式标记 C++ 字符串
- 标记字符串以分隔C++中的值
- 如何使用百分比标记字符串
- 用可变空格标记字符串
- 使用 stl 在 c++ 中标记字符串
- 试图标记字符串
- 根据类型标记字符串流
- 标记字符串
- 如何正确标记字符串
- 如何通过分隔符标记字符串
- 标记字符串以存储值的好方法?或替代用户输入
- 为多种类型标记字符串
- 在 C++ 中标记字符串
- 标记字符串并将结果存储在 boost::iterator_range<std::string::iterator 中>
- 使用字符串流标记字符串,其中最后一个字符是分隔符
- 标记字符串,识别字符时出错
- 如何标记C字符串的末尾
- 标记字符串并构建multimap
- 基于引号标记字符串