c++ - Trouble with std::ostringstream as function parameter -
so got stuck on simple print-function today , don't know how prepare problem. want pass strings function in std::cout-style this:
foo(std::ostringstream() << "hello" << " world!");
and i've read should possible function along lines of
void foo(std::ostringstream& in)
but when implementing unusual behavior:
#include <iostream> #include <sstream> void foo(std::ostringstream& in) { std::cout << in.str(); } int main() { std::ostringstream working; working << "hello" << " world!"; foo(working); // ok std::ostringstream notworking; notworking << "hello"; foo(notworking<<" world!"); // not ok?! homecoming 0; }
while first phone call of foo seems fine , works expected, sec 1 refuses compile though should (from perspective) technically same thing.
error:
error c2664: 'void foo(std::ostringstream &)': cannot convert parameter 1 'std::basic_ostream<char,std::char_traits<char>>' 'std::ostringstream &'
i'm using ms visual studio 2013 express on win7 x64
the overloads of shifting operators io operations take base of operations streams reference. is:
std::ostream& operator<<( std::ostream& os , foo myfo ) { os << myfoo; homecoming os; }
so utilize std::ostream
instead of std::ostringstream
function parameter:
void f( std::ostream& stream );
c++ visual-c++ stringstream
No comments:
Post a Comment