作者khoguan (Khoguan Phuann)
看板C_and_CPP
标题[src] 用 istream_iterator 读进所有输入行至 vector 中
时间Tue Jun 14 10:57:20 2005
一般我们要读进输入行的每一行至 vector 中,都是用
string line;
vector<string> vs;
while (getline(cin, line))
vs.push_back(line);
以下是用 istream_iterator 的另类写法:
// get all lines into vector from istream using iterator
// by KhoGuan Phuann
#include <iostream>
#include <iterator>
#include <vector>
using namespace std;
class Line {
string line_;
public:
const string& line() const { return line_; }
string& line() { return line_; }
};
inline istream& operator>> (istream& is, Line& line)
{
return getline(cin,line.line());
}
inline ostream& operator<< (ostream& os, const Line& line)
{
return os << line.line();
}
typedef istream_iterator<Line> isit_line;
typedef ostream_iterator<Line> osit_line;
// 以上的 class/function/typedef 定义可写入 .h 档中,方便以後再使用
int main()
{
// 要用时,就用这样一行
vector<Line> all((isit_line(cin)),isit_line());
// 测试从最後一行开始印,也是一行码
copy(all.rbegin(), all.rend(), osit_line(cout, "\n"));
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.130.208.166
※ 编辑: khoguan 来自: 220.130.208.166 (06/14 11:04)