动态修改输入流数据



我想实现一个std::stream修饰符/解析器,即在飞行中进行数据操作。

是否可以以流操纵符的形式创建它?例如,我想从标准输入中删除所有行注释(从任何//到行尾),并将其传递给标准输出。

string str;
istream strippingCin = cin >> stripcomments;
while(strippingCin.good())
{
    strippingCin >> str;
    cout << str;
}

也可能有一个大的文件输入而不是cin,所以我不想一次将完整的流数据加载到内存中。

不写自己的流类是可能的吗?

也许我应该走另一条路?

boost::iostreams::filtering_stream是完美的。在编写了一个过滤类之后(参见这里的类似示例),您只需这样做:

boost::iostreams::filtering_istream strippingCin;
strippingCin.push(StripCommentsFilter());
strippingCin.push(std::cin);

istream对象strippingCin准备使用

最新更新