c++在stream中使用iterator
来源:互联网 发布:休闲西服 知乎 编辑:程序博客网 时间:2024/05/19 23:56
1.在stream中使用iterator,可以方便与stl容器和算法操作;
2.stream的iterator和普通的容器iterator不同之处为
2.1 , 需要include <iterator>;
2.2, 声明为istream_iterator<T> name(stream) 和 ostream_iterator<T> name(stream);
2.3, 可用于iostream 派生的所有stream;
2.4, stream结束符用 istream_iterator<T> name; 或 istream_iterator<T> (); 表示
示例:
1. 在包含括号的txt中 找到 最里层的数据 例如 在如下 test.txt 中 找到 D
/*test.txt*/a(b((c(D)e)f))
代码如下:
#include <fstream>#include <iterator>#include <iostream>#include <vector>using namespace std;int main(){ fstream file("test.txt"); istream_iterator<char> iter(file); vector<char> que; while(iter != istream_iterator<char>()/*istream_iterator<char> eof*/) { if(*iter == '(') { que.clear(); que.push_back(*iter); } else if(*iter == ')') { if(que.size() > 1) for(vector<char>::iterator it = que.begin()+1; it != que.end(); ++it) cout<<*it<<endl; que.clear(); } else { if(!que.empty()) que.push_back(*iter); } ++iter; } /*直接使用fstream成员函数的方法 while(!file.eof()) { i++; char t = file.get(); if(t == '(') { que.clear(); que.push_back(t); } else if(t == ')') { if(que.size() > 1) for(vector<char>::iterator it = que.begin()+1; it != que.end(); ++it) cout<<*it<<endl; que.clear(); } else { if(!que.empty()) que.push_back(t); } } */ file.close(); return 0;}
运用 算法 函数 for_each
#include <fstream>#include <iterator>#include <iostream>#include <vector>#include <algorithm>using namespace std;class SearchInerChar{public: void operator()(char c) { if(c == '(') { que.clear(); que.push_back(c); } else if(c == ')') { if(que.size() > 1) for(vector<char>::iterator it = que.begin()+1; it != que.end(); ++it) cout<<*it<<endl; que.clear(); } else { if(!que.empty()) que.push_back(c); } }private: vector<char> que;} innerChar;int main(){ fstream file("test.txt"); istream_iterator<char> iter(file); for_each(iter, istream_iterator<char>(), innerChar); file.close(); return 0;}
--
by standfly
2013-07-06
- c++在stream中使用iterator
- Stream iterator
- C++/C++11中<iterator>的使用
- 在遍历中使用 iterator/reverse_iterator 进行 Erase 的用法
- 如何在遍历中使用 iterator/reverse_iterator 删除元素
- 在遍历中使用 iterator/reverse_iterator 进行 Erase 的用法
- 在遍历中使用 iterator/reverse_iterator 进行 Erase 的用法
- 在遍历中使用 iterator/reverse_iterator 进行 Erase 的用法
- 如何在遍历中使用 iterator/reverse_iterator 删除元素
- 在遍历中使用 iterator/reverse_iterator 进行 Erase 的用法
- 在遍历中使用 iterator/reverse_iterator 进行 Erase 的用法
- C++ 之 Stream Iterator
- iterator adaptors - stream iterators
- Stream Iterator(流迭代器)
- Java 中Iterator使用剖析
- python中使用迭代器 Iterator
- Java 中 Iterator<Object>使用
- Java中Iterator的使用
- android 之slidingmenu控件 (直接封装成了jar )
- HDU 4571 Travel in time 解题报告
- 输入一棵二元树的根结点,求该树的深度
- 18 个最佳代码编辑器/IDE推荐
- linux sed命令详解
- c++在stream中使用iterator
- 单体测试、集成测试、回归测试、系统测试、验收测试等的比较
- 第六章 语句
- Android调试方法 - JNI中输出Log信息
- 191 DIV2
- 转载:miracast 与Android4.2
- 转 machine learning 之logistic regression
- java socket编程
- android Manifest.xml选项详解