C++ 03 添加于 Boost 1.23.0
本次发布
依赖项
Boost.Tokenizer
Boost.Tokenizer 是 Boost C++ 库 的一部分。Boost.Tokenizer 包提供了一种灵活易用的方法来将字符串或其他字符序列分解为一系列标记。
License
根据 Boost Software License, Version 1.0 分发。
属性
- C++03
- 仅头文件
构建状态
| 分支 | GHA CI | Appveyor | Coverity Scan | codecov.io | 依赖 | 文档 | 测试 |
|---|---|---|---|---|---|---|---|
master |
|||||||
develop |
概述
将短语分解为单词。
#include <iostream>
#include <boost/tokenizer.hpp>
#include <string>
int main(){
std::string s = "This is, a test";
typedef boost::tokenizer<> Tok;
Tok tok(s);
for (Tok::iterator beg = tok.begin(); beg != tok.end(); ++beg){
std::cout << *beg << "\n";
}
}
使用基于范围的 for 循环(C++11 或更高版本)
#include <iostream>
#include <boost/tokenizer.hpp>
#include <string>
int main(){
std::string s = "This is, a test";
boost::tokenizer<> tok(s);
for (auto token: tok) {
std::cout << token << "\n";
}
}
相关材料
Boost.Tokenizer,theboostcpplibraries.com 的第 10 章,包含几个示例,包括 escaped_list_separator。
致谢
来自作者
我想感谢 boost 邮件列表的成员,他们在开发和正式评审过程中提出的意见、赞扬和批评,帮助 Tokenizer 库成为今天的样子。我尤其想感谢 Aleksey Gurtovoy 使用一对迭代器来指定输入的想法,而不是使用字符串。我还想感谢 Jeremy Siek 提供标记迭代器的容器接口的想法,以及简化 TokenizerFunctions 的模板参数。他和 Daryle Walker 还强调了将接口和实现分离的必要性。Gary Powell 提出了使用 isspace 和 ispunct 作为 char_delimiters_separator 默认值的想法。Jeff Garland 提出了如何更改模板参数顺序以使 tokenizer 更易于声明的想法。感谢 Douglas Gregor,他担任评审经理,并在 boost 列表和电子邮件中提供了许多关于如何完善 Tokenizer 的实现和演示的见解。最后,感谢 Beman Dawes 将最终版本集成到 boost 发行版中。
目录
| 名称 | 目的 |
|---|---|
example |
示例 |
include |
header |
测试 |
单元测试 |
更多信息
- 提问
- 报告错误:请务必提及您正在使用的 Boost 版本、平台和编译器。一个可以重现问题的可编译小代码示例也总是有帮助的。
- 请将您的补丁作为拉取请求提交到 develop 分支。请注意,提交补丁即表示您同意根据 Boost Software License, Version 1.0 许可您的修改。
- 关于该库的讨论在 Boost 开发者邮件列表 上进行。发布前请务必阅读 讨论政策,并在主题行开头添加
[tokenizer]标签。