Hello Jiri, >root [0] ostrstream buf; buf << 1 << ends; >root [1] buf.str() >(const basic_ostringstream<char,char_traits<char>,allocator<char> >>::__string_type)275332816 > >The return type of ostrstream.str() is different from how it works on >root compiled with gcc-2.95. It used to return char* which is >consistent with the docs at >http://darbujan.fzu.cz/cgi-bin/info2www?(iostream-295)Strings >Returning this type is what ostringstream should do I believe. As I look into ANSI/ISO C++ standard, it says basic_string<charT,traits,Allocator> str() const; void str(const basic_string<charT,traits,Allocator>& s); And basic_ostringstream<char,char_traits<char>,allocator<char>::__string_type is defined as basic_string<char,char_traits<char>,allocator<char> > which is typedefed as string. So, Cint with gcc3 behaves as it supposed to be. In fact, I simply mirror what is defined in the standard header file and I can not do much in this regard. >Second try: >Including headers results in the following error >root [0] #include <string> >root [1] #include <strstream> >root [2] ostrstream buf; buf << 1 << ends; >root [3] buf.str() >Internal error: template function call G__ateval failed FILE: LINE:0 >(const basic_ostringstream<char,char_traits<char>,allocator<char> >>::__string_type)276003640 >*** Interpreter error recovered *** This is peculiar. Same thing works on my machine. It looks like evaluation of buf.str() is performed just fine. Problem occurs when Cint tries to print it out with G__ateval function template. In fact, G__ateval function template should not be used because specialized version is defined in <string>. Let me investigate. >I tried also the ostringstream class I simply typedef ostringstream and ostrstream to be identical type. So, they should behave exactly the same way.
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:39 MET