Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/io/basic ios"

From cppreference.com
< cpp‎ | io
(Protected member functions: move to template)
m (fmt)
 
(21 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 
{{cpp/title|basic_ios}}
 
{{cpp/title|basic_ios}}
{{cpp/io/basic_ios/sidebar}}
+
{{cpp/io/basic_ios/navbar}}
{{ddcl | header=ios | 1=
+
{{ddcl|header=ios|1=
template<  
+
template<
     class CharT,  
+
     class CharT,
 
     class Traits = std::char_traits<CharT>
 
     class Traits = std::char_traits<CharT>
> class basic_ios;
+
> class basic_ios
 +
    : public std::ios_base
 
}}
 
}}
  
The class {{tt|basic_ios}} provides facilities for interfacing with objects that have {{rlpt|basic_streambuf}} interface. Several {{tt|basic_ios}} objects can refer to one actual {{tt|basic_streambuf}} object. Character type dependent formatting flags and error state is stored in {{tt|basic_ios}} class.
+
The class {{tt|std::basic_ios}} provides facilities for interfacing with objects that have {{lc|std::basic_streambuf}} interface. Several {{tt|std::basic_ios}} objects can refer to one actual {{tt|std::basic_streambuf}} object.
  
{{inheritance diagram|image=std-basic_ios-inheritance.png|map=
+
{{inheritance diagram/std-basic_ios}}
rect 5 6 107 39 [[cpp/io/ios_base]]
+
}}
+
  
Two specializations for common character types are also provided:
+
{{cpp/basic char typedefs|ios}}
  
{{tdcl list begin}}
+
{{cpp/io/member types}}
{{tdcl list hitem | Type | Definition}}
+
{{tdcl list item | {{tt|ios}} | {{cpp|basic_ios<char>}}}}
+
{{tdcl list item | {{tt|wios}} | {{cpp|basic_ios<wchar_t>}}}}
+
{{tdcl list end}}
+
 
+
===Member types===
+
{{tdcl list begin}}
+
{{tdcl list hitem | Member type | Definition}}
+
{{tdcl list template | cpp/io/tdcl list char_type}}
+
{{tdcl list template | cpp/io/tdcl list traits_type}}
+
{{tdcl list template | cpp/io/tdcl list int_type}}
+
{{tdcl list template | cpp/io/tdcl list pos_type}}
+
{{tdcl list template | cpp/io/tdcl list off_type}}
+
{{tdcl list end}}
+
  
 
===Public member functions===
 
===Public member functions===
{{dcl list begin}}
+
{{dsc begin}}
{{dcl list template | cpp/io/basic_ios/dcl list constructor}}
+
{{dsc inc|cpp/io/basic_ios/dsc constructor}}
{{dcl list template | cpp/io/basic_ios/dcl list destructor}}
+
{{dsc inc|cpp/io/basic_ios/dsc destructor}}
{{dcl list mem fun | operator{{=}} | nolink=true | the copy assignment operator is deleted}}
+
{{dsc mem fun|operator{{=}}|nolink=true|the copy assignment operator is deleted}}
  
{{dcl list h2 | State functions}}
+
{{dsc h2|State functions}}
{{dcl list template | cpp/io/basic_ios/dcl list good}}
+
{{dsc inc|cpp/io/basic_ios/dsc good}}
{{dcl list template | cpp/io/basic_ios/dcl list eof}}
+
{{dsc inc|cpp/io/basic_ios/dsc eof}}
{{dcl list template | cpp/io/basic_ios/dcl list fail}}
+
{{dsc inc|cpp/io/basic_ios/dsc fail}}
{{dcl list template | cpp/io/basic_ios/dcl list bad}}
+
{{dsc inc|cpp/io/basic_ios/dsc bad}}
{{dcl list template | cpp/io/basic_ios/dcl list operator!}}
+
{{dsc inc|cpp/io/basic_ios/dsc operator!}}
{{dcl list template | cpp/io/basic_ios/dcl list operator bool}}
+
{{dsc inc|cpp/io/basic_ios/dsc operator bool}}
{{dcl list template | cpp/io/basic_ios/dcl list rdstate}}
+
{{dsc inc|cpp/io/basic_ios/dsc rdstate}}
{{dcl list template | cpp/io/basic_ios/dcl list setstate}}
+
{{dsc inc|cpp/io/basic_ios/dsc setstate}}
{{dcl list template | cpp/io/basic_ios/dcl list clear}}
+
{{dsc inc|cpp/io/basic_ios/dsc clear}}
  
{{dcl list h2 | Formatting}}
+
{{dsc h2|Formatting}}
{{dcl list template | cpp/io/basic_ios/dcl list copyfmt}}
+
{{dsc inc|cpp/io/basic_ios/dsc copyfmt}}
{{dcl list template | cpp/io/basic_ios/dcl list fill}}
+
{{dsc inc|cpp/io/basic_ios/dsc fill}}
  
{{dcl list h2 | Miscellaneous}}
+
{{dsc h2|Miscellaneous}}
{{dcl list template | cpp/io/basic_ios/dcl list exceptions}}
+
{{dsc inc|cpp/io/basic_ios/dsc exceptions}}
{{dcl list template | cpp/io/basic_ios/dcl list imbue}}
+
{{dsc inc|cpp/io/basic_ios/dsc imbue}}
{{dcl list template | cpp/io/basic_ios/dcl list rdbuf}}
+
{{dsc inc|cpp/io/basic_ios/dsc rdbuf}}
{{dcl list template | cpp/io/basic_ios/dcl list tie}}
+
{{dsc inc|cpp/io/basic_ios/dsc tie}}
{{dcl list template | cpp/io/basic_ios/dcl list narrow}}
+
{{dsc inc|cpp/io/basic_ios/dsc narrow}}
{{dcl list template | cpp/io/basic_ios/dcl list widen}}
+
{{dsc inc|cpp/io/basic_ios/dsc widen}}
{{dcl list end}}
+
{{dsc end}}
  
 
===Protected member functions===
 
===Protected member functions===
{{dcl list begin}}
+
{{dsc begin}}
{{dcl list prot mem fun | cpp/io/basic_ios/init | initializes a default-constructed {{cpp|std::basic_ios}} }}
+
{{dsc inc|cpp/io/basic_ios/dsc init}}
{{dcl list prot mem fun | cpp/io/basic_ios/move | moves from another {{cpp|std::basic_ios}} except for {{tt|rdbuf}}}}
+
{{dsc inc|cpp/io/basic_ios/dsc move}}
{{dcl list prot mem fun | cpp/io/basic_ios/swap | swaps with another {{cpp|std::basic_ios}} except for {{tt|rdbuf}}}}
+
{{dsc inc|cpp/io/basic_ios/dsc swap}}
{{dcl list template | cpp/io/basic_ios/dcl list set_rdbuf}}
+
{{dsc inc|cpp/io/basic_ios/dsc set_rdbuf}}
{{dcl list end}}
+
{{dsc end}}
  
 
{{cpp/io/ios_base/inherit}}
 
{{cpp/io/ios_base/inherit}}
 +
 +
===Notes===
 +
Straightforward implementation of {{tt|std::basic_ios}} stores only the following members (which all depend on the template parameters and thus cannot be part of {{lc|std::ios_base}}):
 +
* the fill character (see {{rlt|fill|fill()}})
 +
* the tied stream pointer (see {{rlt|tie|tie()}})
 +
* the associated stream buffer pointer (see {{rlt|rdbuf|rdbuf()}}).
 +
 +
Actual implementations vary:
 +
 +
Microsoft Visual Studio stores just those three members.
 +
 +
LLVM libc++ stores 1 less member: it maintains the {{tt|rdbuf}} pointer as a {{c/core|void*}} member of {{tt|ios_base}}.
 +
 +
GNU libstdc++ stores 4 additional members: three cached facets and a flag to indicate that fill was initialized.
 +
 +
<!-- should I even bother with Oracle which plays dumb and maintains the iostate and the exception mask all in here instead of ios_base? -->
 +
 +
{{langlinks|de|es|fr|it|ja|pt|ru|zh}}

Latest revision as of 09:58, 8 September 2023

 
 
 
 
Defined in header <ios>
template<

    class CharT,
    class Traits = std::char_traits<CharT>
> class basic_ios

    : public std::ios_base

The class std::basic_ios provides facilities for interfacing with objects that have std::basic_streambuf interface. Several std::basic_ios objects can refer to one actual std::basic_streambuf object.

cpp/io/ios basestd-basic ios-inheritance.svg

Inheritance diagram

Several typedefs for common character types are provided:

Defined in header <ios>
Type Definition
std::ios std::basic_ios<char>
std::wios std::basic_ios<wchar_t>

Contents

[edit] Member types

Member type Definition
char_type CharT[edit]
traits_type Traits; the program is ill-formed if Traits::char_type is not CharT.[edit]
int_type Traits::int_type[edit]
pos_type Traits::pos_type[edit]
off_type Traits::off_type[edit]

[edit] Public member functions

constructs the object
(public member function) [edit]
[virtual]
destructs the object
(virtual public member function) [edit]
operator=
the copy assignment operator is deleted
(public member function)
State functions
checks if no error has occurred i.e. I/O operations are available
(public member function) [edit]
checks if end-of-file has been reached
(public member function) [edit]
checks if an error has occurred
(public member function) [edit]
checks if a non-recoverable error has occurred
(public member function) [edit]
checks if an error has occurred (synonym of fail())
(public member function) [edit]
checks if no error has occurred (synonym of !fail())
(public member function) [edit]
returns state flags
(public member function) [edit]
sets state flags
(public member function) [edit]
modifies state flags
(public member function) [edit]
Formatting
copies formatting information
(public member function) [edit]
manages the fill character
(public member function) [edit]
Miscellaneous
manages exception mask
(public member function) [edit]
sets the locale
(public member function) [edit]
manages associated stream buffer
(public member function) [edit]
manages tied stream
(public member function) [edit]
narrows characters
(public member function) [edit]
widens characters
(public member function) [edit]

[edit] Protected member functions

initializes a default-constructed std::basic_ios
(protected member function) [edit]
(C++11)
moves from another std::basic_ios except for rdbuf
(protected member function) [edit]
(C++11)
swaps with another std::basic_ios except for rdbuf
(protected member function) [edit]
replaces the rdbuf without clearing its error state
(protected member function) [edit]

Inherited from std::ios_base

Member functions

Formatting
manages format flags
(public member function of std::ios_base) [edit]
sets specific format flag
(public member function of std::ios_base) [edit]
clears specific format flag
(public member function of std::ios_base) [edit]
manages decimal precision of floating point operations
(public member function of std::ios_base) [edit]
manages field width
(public member function of std::ios_base) [edit]
Locales
sets locale
(public member function of std::ios_base) [edit]
returns current locale
(public member function of std::ios_base) [edit]
Internal extensible array
[static]
returns a program-wide unique integer that is safe to use as index to pword() and iword()
(public static member function of std::ios_base) [edit]
resizes the private storage if necessary and access to the long element at the given index
(public member function of std::ios_base) [edit]
resizes the private storage if necessary and access to the void* element at the given index
(public member function of std::ios_base) [edit]
Miscellaneous
registers event callback function
(public member function of std::ios_base) [edit]
sets whether C++ and C I/O libraries are interoperable
(public static member function of std::ios_base) [edit]
Member classes
stream exception
(public member class of std::ios_base) [edit]
initializes standard stream objects
(public member class of std::ios_base) [edit]

Member types and constants

Type Explanation
stream open mode type

The following constants are also defined:

Constant Explanation[edit]
app seek to the end of stream before each write[edit]
binary open in binary mode[edit]
in open for reading[edit]
out open for writing[edit]
trunc discard the contents of the stream when opening[edit]
ate seek to the end of stream immediately after open[edit]
noreplace (C++23) open in exclusive mode[edit]

(typedef) [edit]
formatting flags type

The following constants are also defined:

Constant Explanation[edit]
dec use decimal base for integer I/O: see std::dec[edit]
oct use octal base for integer I/O: see std::oct[edit]
hex use hexadecimal base for integer I/O: see std::hex[edit]
basefield dec | oct | hex. Useful for masking operations[edit]
left left adjustment (adds fill characters to the right): see std::left[edit]
right right adjustment (adds fill characters to the left): see std::right[edit]
internal internal adjustment (adds fill characters to the internal designated point): see std::internal[edit]
adjustfield left | right | internal. Useful for masking operations[edit]
scientific generate floating point types using scientific notation, or hex notation if combined with fixed: see std::scientific[edit]
fixed generate floating point types using fixed notation, or hex notation if combined with scientific: see std::fixed[edit]
floatfield scientific | fixed. Useful for masking operations[edit]
boolalpha insert and extract bool type in alphanumeric format: see std::boolalpha[edit]
showbase generate a prefix indicating the numeric base for integer output, require the currency indicator in monetary I/O: see std::showbase[edit]
showpoint generate a decimal-point character unconditionally for floating-point number output: see std::showpoint[edit]
showpos generate a + character for non-negative numeric output: see std::showpos[edit]
skipws skip leading whitespace before certain input operations: see std::skipws[edit]
unitbuf flush the output after each output operation: see std::unitbuf[edit]
uppercase replace certain lowercase letters with their uppercase
equivalents in certain output operations: see std::uppercase[edit]

(typedef) [edit]
state of the stream type

The following constants are also defined:

Constant Explanation[edit]
goodbit no error[edit]
badbit irrecoverable stream error[edit]
failbit input/output operation failed (formatting or extraction error)[edit]
eofbit associated input sequence has reached end-of-file[edit]

(typedef) [edit]
seeking direction type

The following constants are also defined:

Constant Explanation[edit]
beg the beginning of a stream[edit]
end the ending of a stream[edit]
cur the current position of stream position indicator[edit]

(typedef) [edit]
specifies event type
(enum) [edit]
callback function type
(typedef) [edit]

[edit] Notes

Straightforward implementation of std::basic_ios stores only the following members (which all depend on the template parameters and thus cannot be part of std::ios_base):

  • the fill character (see fill())
  • the tied stream pointer (see tie())
  • the associated stream buffer pointer (see rdbuf()).

Actual implementations vary:

Microsoft Visual Studio stores just those three members.

LLVM libc++ stores 1 less member: it maintains the rdbuf pointer as a void* member of ios_base.

GNU libstdc++ stores 4 additional members: three cached facets and a flag to indicate that fill was initialized.