2014-10-11 78 views
-3

考慮以下功能:瞭解流:該功能如何工作?

template <class T> 
void to_string(const T& val, string& s) { 
    ostringstream o; 
    o << val; 
    s = o.str(); 
} 

我不知道這個功能是如何工作的。我有兩個假設,請告訴我哪一個是正確的(如果有的話):

  1. ostringstreamoperator<<的重載需要什麼T是(不太可能)。

  2. 有一個全局函數,簽名ostream& operator<<(ostream& stream, Sometype& t)。這允許T寫入ostringstream,假設它是Sometype

哪一個更可能是正確的?我假設第二個,但我不確定。

+0

閱讀文檔並找出 – 2014-10-11 11:35:03

回答

3

對於某些類型(大多數算術類型),ostream中有一個member function operator<<

對於所有其他類型operator<<必須是具有您在第二個項目符號中提出的確切簽名的非成員函數。儘管第二個參數在大多數情況下(如果不是全部的話)是SomeType const&