2014-10-11 51 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&