2010-11-25 57 views

回答

0

像@Steve湯森上面說的,它可能不值得,但是如果你想做到這一點(和你事先就知道參與行數),你可以這樣做:

#include <iostream> 
#include <iterator> 
#include <string> 
#include <sstream> 
#include <algorithm> 

using namespace std; 

template <typename _t, int _count> 
struct ftor 
{ 
    ftor(istream& str) : _str(str), _c() {} 

    _t operator()() 
    { 
    ++_c; 
    if (_count > _c) return *(_str++); // need more 
    return *_str; // last one 
    } 

    istream_iterator<_t> _str; 
    int _c; 
}; 

int main(void) 
{ 
    ostringstream sv; 
    generate_n(ostream_iterator<string>(sv, "\n"), 5, ftor<string, 5>(cin)); 

    cout << sv.str(); 

    return 0; 
} 
+1

你正在讀字,而不是行。無需事先了解行數,便可輕鬆測試流結束。只需使用void *運算符。 – Basilevs 2010-11-26 03:20:59

0

有以下問題的詳細信息(每@馬丁紐約)上閱讀從流直接串流。這不是一個直接的重複,因爲您希望逐行處理輸入,但這種方法難以提高效率。一旦原始數據位於字符串流中,就可以使用字符範圍實例化各個行。

How to read file content into istringstream?

說實話,這可能是這不是一個真正的巨大關注PERF反正有問題了很多工作。