std::stringstream要真的当流来使,太慢了,原因
virtual streamsize xsputn(const _E *_S, streamsize _N)
{streamsize _M, _Ns;
for (_Ns = 0; 0 < _N; )
if (pptr() != 0 && 0 < (_M = epptr() - pptr()))
{if (_N < _M)
_M = _N;
_Tr::copy(pptr(), _S, _M);
_S += _M, _Ns += _M, _N -= _M, pbump(_M); }
else if (_Tr::eq_int_type(_Tr::eof(),
overflow(_Tr::to_int_type(*_S))))
break;
else
++_S, ++_Ns, --_N;
return (_Ns); }
如果能够使_M加大,就可以提高速度。
_M = epptr() - pptr();
就是这个家伙
_Fillch = _WIDEN(_E, ' ');
值为32。因此,当输入Stringstream的数据比较大时,循环量很大。