This is the mail archive of the
libstdc++@sourceware.cygnus.com
mailing list for the libstdc++ project.
basic_stringbuf<>::sync
- To: libstdc++@sourceware.cygnus.com
- Subject: basic_stringbuf<>::sync
- From: Ryszard Kabatek <rysio@rumcajs.chemie.uni-halle.de>
- Date: Fri, 28 May 1999 10:58:27 +0200 (CEST)
- Reply-To: Ryszard Kabatek <kabatek@chemie.uni-halle.de>
basic_stringbuf<>::sync calls the non-const version of the
basic_string<>::begin and basic_string<>::end member function.
It makes the _M_str object unsharable.
So any call of setbuf (it calls sync) requires a reallocation.
A possibly solution is to call a const member function and use
the const_cast operator to remove the const modifier:
virtual int
sync()
{
char_type __first = const_cast<char_type>(_M_str.data());
char_type __last = const_cast<char_type>(_M_str.data() +
_M_str.size());
if (_M_mode & ios_base::in)
setg(__first, __first, __last);
if (_M_mode & ios_base::out)
setp(__first, __last);
return 0;
}
Ryszard Kabatek
Martin-Luther University Halle-Wittenberg, Department of Physical Chemistry
Geusaer Str. 88, 06217 Merseburg, Germany
Tel. +49 3461 46 2487 (2466) Fax. +49 3461 46 2129