std::stringstream只适合作字符串格式化

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的数据比较大时,循环量很大。 

你可能感兴趣的:(std::stringstream只适合作字符串格式化)