[src] 用 istream_iterator 讀進所有輸入行至 …

看板C_and_CPP (C/C++)作者 (Khoguan Phuann)時間19年前 (2005/06/14 10:42), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
一般我們要讀進輸入行的每一行至 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)
文章代碼(AID): #12haG4rp (C_and_CPP)
文章代碼(AID): #12haG4rp (C_and_CPP)