增强标记器重新赋值
Boost tokenizer re-assignment
我必须从一个结构体中读取多个字符串,然后使用boost tokenizer对它们进行标记。我现在的代码是:
typedef boost::tokenizer<boost::char_separator<char> > Tokenizer;
boost::char_separator<char> sep(";");
Tokenizer tok1(str1, sep);
...
Tokenizer tok2(str2, sep);
...
Tokenizer tok3(str3, sep);
.....
注意,我每次都创建一个新的标记器对象。是否有可能只使用一个标记器对象来做到这一点?像这样:
Tokenizer tok(str1, sep);
...
// tok(str2, sep); or tok = Tokenizer(str2, sep)
PS:以上两个我都试过了,但是都失败了。
使用assign
成员函数分配新的令牌源
#include<iostream>
#include<boost/tokenizer.hpp>
#include<string>
void test(boost::tokenizer<>& tok)
{
for(boost::tokenizer<>::iterator beg=tok.begin(); beg!=tok.end();++beg){
std::cout << *beg << " : ";
}
std::cout << 'n';
}
int main()
{
std::string s = "This is, a test";
boost::tokenizer<> tok(s);
test(tok);
tok.assign(s);
test(tok);
tok.assign(s);
test(tok);
}
预期输出:This : is : a : test :
This : is : a : test :
This : is : a : test :
相关文章:
- 变量在使用赋值语句赋值后恢复为以前的值
- 如何在 c++ 中正确声明/赋值变量的值
- 复制构造函数和赋值运算符的值类实现
- 为什么我的类工作正常,即使在返回垃圾值作为赋值运算符和空复制构造函数的返回之后
- 奇怪的 G++ 错误,带有关于左值和赋值的简单代码
- 用于捕获未赋值的 r 值的编译器选项
- 为可变结构赋值,该值必须易于复制
- 如何修复数组赋值从 ascii 值到 int
- 我想预先递增变量的赋值(预递增值大于 1)?
- 使用带有下标运算符的赋值运算符将值分配给 std::map
- 为什么 Visual C++ 编译器允许临时赋值到左值引用
- 需要左值作为赋值错误的左操作数通过 if 语句
- 左值和右值赋值错误
- 了解工厂方法和静态变量赋值的返回值优化 (Visual Studio)
- 运算符重载所需的左值作为赋值的左操作数
- 将真值赋给浮点值
- 指针向量,其元素用new初始化:赋给新值时会发生什么
- 增强标记器重新赋值
- c++函数返回右值,但可以为其赋一个新值
- 为什么可以给引用赋一个新值,以及如何使引用引用其他东西