STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Macros | Functions
xstring_insert.h File Reference
#include <ostream>

Go to the source code of this file.

Macros

#define _XSTRING_INSERT_H
 

Functions

template<class _Elem , class _Traits , class _SizeT >
_STD_BEGIN basic_ostream< _Elem, _Traits > & _Insert_string (basic_ostream< _Elem, _Traits > &_Ostr, const _Elem *const _Data, const _SizeT _Size)
 

Macro Definition Documentation

#define _XSTRING_INSERT_H

Function Documentation

template<class _Elem , class _Traits , class _SizeT >
_STD_BEGIN basic_ostream<_Elem, _Traits>& _Insert_string ( basic_ostream< _Elem, _Traits > &  _Ostr,
const _Elem *const  _Data,
const _SizeT  _Size 
)
inline
24  { // insert a character-type sequence into _Ostr as if through a basic_string copy
25  ios_base::iostate _State = ios_base::goodbit;
26  _SizeT _Pad = _Ostr.width() <= 0 || static_cast<_SizeT>(_Ostr.width()) <= _Size
27  ? 0 : static_cast<_SizeT>(_Ostr.width()) - _Size;
28  const typename basic_ostream<_Elem, _Traits>::sentry _Ok(_Ostr);
29 
30  if (!_Ok)
31  _State |= ios_base::badbit;
32  else
33  { // state okay, insert characters
35  if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left)
36  for (; 0 < _Pad; --_Pad) // pad on left
37  if (_Traits::eq_int_type(_Traits::eof(),
38  _Ostr.rdbuf()->sputc(_Ostr.fill())))
39  { // insertion failed, quit
40  _State |= ios_base::badbit;
41  break;
42  }
43 
44  if (_State == ios_base::goodbit
45  && _Ostr.rdbuf()->sputn(_Data, (streamsize)_Size)
46  != (streamsize)_Size)
47  _State |= ios_base::badbit;
48  else
49  for (; 0 < _Pad; --_Pad) // pad on right
50  if (_Traits::eq_int_type(_Traits::eof(),
51  _Ostr.rdbuf()->sputc(_Ostr.fill())))
52  { // insertion failed, quit
53  _State |= ios_base::badbit;
54  break;
55  }
56  _Ostr.width(0);
57  _CATCH_IO_(_Ostr)
58  }
59 
60  _Ostr.setstate(_State);
61  return (_Ostr);
62  }
#define _CATCH_IO_(x)
Definition: ostream:31
long long streamsize
Definition: iosfwd:23
_CRT_BEGIN_C_HEADER _Check_return_ _Ret_maybenull_ _In_ size_t _Size
Definition: corecrt_malloc.h:58
#define _TRY_IO_BEGIN
Definition: ostream:29
Definition: ostream:116
_Mysb *__CLR_OR_THIS_CALL rdbuf() const
Definition: ios:89
_Elem __CLR_OR_THIS_CALL fill() const
Definition: ios:110
fmtflags __CLR_OR_THIS_CALL flags() const
Definition: xiosbase:375
_In_ size_t _Deref_pre_opt_z_ char const _In_ size_t _Inout_ mbstate_t * _State
Definition: wchar.h:78
streamsize __CLR_OR_THIS_CALL width() const
Definition: xiosbase:420
static constexpr _Iostate goodbit
Definition: xiosbase:86
int_type __CLR_OR_THIS_CALL sputc(_Elem _Ch)
Definition: streambuf:197
static constexpr _Iostate badbit
Definition: xiosbase:89
streamsize __CLR_OR_THIS_CALL sputn(const _Elem *_Ptr, streamsize _Count)
Definition: streambuf:204
void __CLR_OR_THIS_CALL setstate(iostate _State, bool _Reraise=false)
Definition: ios:55
static constexpr _Fmtflags adjustfield
Definition: xiosbase:75
Definition: xthread:165
static constexpr _Fmtflags left
Definition: xiosbase:61