C ++ позволяет перегружать операторы >>
и <<
. std::stringstream
является производной от std::istream
и наследует перегрузки операторов >>
из std::istream
.
std::istream
имеет множество перегрузок для многих распространенных типов. Вы можете найти их список здесь .
Типичная перегрузка оператора std::istream
>>
выглядит следующим образом:
std::istream& operator>>(std::istream& stream, YourType& var) {
/*
** code here to parse and read a 'YourType' into 'var'
*/
/* var is set */
return stream; /* return the same stream to allow chaining */
}
Когда вы делаете some_stream >> YourType_object
, вызывается соответствующая перегрузка оператора >>
. В вышеупомянутом случае наша перегрузка оператора вызывается с параметром stream
, принимающим some_stream
, и var
, принимающим YourType_object
.
Перегрузки >>
(и перегрузки <<
тоже) интеллектуально возвращают поток, которым они управляли; тем самым, позволяя объединить ряд операторов >>
.