Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/io"

From cppreference.com
< cpp
m (replace zero to O)
m
Line 14: Line 14:
 
{{dsc begin}}
 
{{dsc begin}}
 
{{dsc h2 | Abstraction}}
 
{{dsc h2 | Abstraction}}
 +
{{dsc header | ios }}
 
{{dsc class | cpp/io/ios_base | manages formatting flags and input/output exceptions}}
 
{{dsc class | cpp/io/ios_base | manages formatting flags and input/output exceptions}}
 
{{dsc tclass | cpp/io/basic_ios | manages an arbitrary stream buffer}}
 
{{dsc tclass | cpp/io/basic_ios | manages an arbitrary stream buffer}}
 +
{{dsc header | streambuf }}
 
{{dsc tclass | cpp/io/basic_streambuf | abstracts a raw device}}
 
{{dsc tclass | cpp/io/basic_streambuf | abstracts a raw device}}
{{dsc tclass | cpp/io/basic_istream | wraps a given abstract device ({{lc|std::basic_streambuf}})<br/> and provides high-level input interface}}
+
{{dsc header | ostream }}
 
{{dsc tclass | cpp/io/basic_ostream | wraps a given abstract device ({{lc|std::basic_streambuf}})<br/> and provides high-level output interface}}
 
{{dsc tclass | cpp/io/basic_ostream | wraps a given abstract device ({{lc|std::basic_streambuf}})<br/> and provides high-level output interface}}
 +
{{dsc header | istream }}
 +
{{dsc tclass | cpp/io/basic_istream | wraps a given abstract device ({{lc|std::basic_streambuf}})<br/> and provides high-level input interface}}
 
{{dsc tclass | cpp/io/basic_iostream | wraps a given abstract device ({{lc|std::basic_streambuf}})<br/> and provides high-level input/output interface}}
 
{{dsc tclass | cpp/io/basic_iostream | wraps a given abstract device ({{lc|std::basic_streambuf}})<br/> and provides high-level input/output interface}}
 
{{dsc h2 | File I/O implementation}}
 
{{dsc h2 | File I/O implementation}}
 +
{{dsc header | fstream }}
 
{{dsc tclass | cpp/io/basic_filebuf | implements raw file device}}
 
{{dsc tclass | cpp/io/basic_filebuf | implements raw file device}}
 
{{dsc tclass | cpp/io/basic_ifstream | implements high-level file stream input operations}}
 
{{dsc tclass | cpp/io/basic_ifstream | implements high-level file stream input operations}}
Line 26: Line 31:
 
{{dsc tclass | cpp/io/basic_fstream | implements high-level file stream input/output operations}}
 
{{dsc tclass | cpp/io/basic_fstream | implements high-level file stream input/output operations}}
 
{{dsc h2 | String I/O implementation}}
 
{{dsc h2 | String I/O implementation}}
 +
{{dsc header | sstream }}
 
{{dsc tclass | cpp/io/basic_stringbuf | implements raw string device}}
 
{{dsc tclass | cpp/io/basic_stringbuf | implements raw string device}}
 
{{dsc tclass | cpp/io/basic_istringstream | implements high-level string stream input operations}}
 
{{dsc tclass | cpp/io/basic_istringstream | implements high-level string stream input operations}}
Line 31: Line 37:
 
{{dsc tclass | cpp/io/basic_stringstream | implements high-level string stream input/output operations}}
 
{{dsc tclass | cpp/io/basic_stringstream | implements high-level string stream input/output operations}}
 
{{dsc h2 | Array I/O implementations}}
 
{{dsc h2 | Array I/O implementations}}
 +
{{dsc header | strstream }}
 
{{dsc class | cpp/io/strstreambuf | notes={{mark deprecated}} | implements raw character array device}}
 
{{dsc class | cpp/io/strstreambuf | notes={{mark deprecated}} | implements raw character array device}}
 
{{dsc class | cpp/io/istrstream | notes={{mark deprecated}} | implements character array input operations}}
 
{{dsc class | cpp/io/istrstream | notes={{mark deprecated}} | implements character array input operations}}
Line 74: Line 81:
 
</source>
 
</source>
  
Predefined standard stream objects:
+
====Predefined standard stream objects====
<source lang="cpp">
+
{{dsc begin}}
extern  istream  cin;  //standard input (stdin)
+
{{dsc header | iostream}}
extern wistream wcin;
+
{{dsc inc | cpp/io/dsc cin}}
extern  ostream  cout;  //standard output (stdout)
+
{{dsc inc | cpp/io/dsc cout}}
extern wostream wcout;
+
{{dsc inc | cpp/io/dsc cerr}}
extern  ostream  cerr;  //standard error (stderr)
+
{{dsc inc | cpp/io/dsc clog}}
extern wostream wcerr;
+
{{dsc end}}
extern  ostream  clog;  //standard log (stdlog)
+
extern wostream wclog;
+
</source>
+
  
 
====[[cpp/io/manip|I/O Manipulators]]====
 
====[[cpp/io/manip|I/O Manipulators]]====
Line 100: Line 104:
 
{{dsc end}}
 
{{dsc end}}
  
Four specializations of {{lc|std::fpos}} are provided:  
+
The following specializations of {{lc|std::fpos}} are provided:  
 
{{dsc begin}}
 
{{dsc begin}}
 
{{dsc header | ios}}
 
{{dsc header | ios}}
 
{{dsc hitem | Type | Definition}}
 
{{dsc hitem | Type | Definition}}
 
{{dsc | {{tt|streampos}} | {{c|std::fpos<std::char_traits<char>::state_type>}}}}
 
{{dsc | {{tt|streampos}} | {{c|std::fpos<std::char_traits<char>::state_type>}}}}
{{dsc | {{tt|u16streampos}} | {{c|std::fpos<std::char_traits<char16_t>::state_type>}}}}
 
{{dsc | {{tt|u32streampos}} | {{c|std::fpos<std::char_traits<char32_t>::state_type>}}}}
 
 
{{dsc | {{tt|wstreampos}} | {{c|std::fpos<std::char_traits<wchar_t>::state_type>}}}}
 
{{dsc | {{tt|wstreampos}} | {{c|std::fpos<std::char_traits<wchar_t>::state_type>}}}}
 
{{dsc end}}
 
{{dsc end}}

Revision as of 06:46, 13 March 2015

C++ includes two input/output libraries: a modern, stream-based I/O library and the standard set of C-style I/O functions.

Contents

Stream-based I/O

The stream-based input/output library is organized around abstract input/output devices. These abstract devices allow the same code to handle input/output to files, memory streams, or custom adaptor devices that perform arbitrary operations (e.g. compression) on the fly.

Most of the classes are templated, so they can be adapted to any basic character type. Separate typedefs are provided for the most common basic character types (char and wchar_t). The classes are organized into the following hierarchy:

cpp/io/ios basecpp/io/basic ioscpp/io/basic istreamcpp/io/basic ifstreamcpp/io/basic istringstreamcpp/io/basic ostreamcpp/io/basic ofstreamcpp/io/basic ostringstreamcpp/io/basic fstreamcpp/io/basic stringstreamcpp/io/basic iostreamstd-io-complete-inheritance.svg

Inheritance diagram

Abstraction
Defined in header <ios>
manages formatting flags and input/output exceptions
(class)
manages an arbitrary stream buffer
(class template)
Defined in header <streambuf>
abstracts a raw device
(class template)
Defined in header <ostream>
wraps a given abstract device (std::basic_streambuf)
and provides high-level output interface
(class template)
Defined in header <istream>
wraps a given abstract device (std::basic_streambuf)
and provides high-level input interface
(class template)
wraps a given abstract device (std::basic_streambuf)
and provides high-level input/output interface
(class template)
File I/O implementation
Defined in header <fstream>
implements raw file device
(class template)
implements high-level file stream input operations
(class template)
implements high-level file stream output operations
(class template)
implements high-level file stream input/output operations
(class template)
String I/O implementation
Defined in header <sstream>
implements raw string device
(class template)
implements high-level string stream input operations
(class template)
implements high-level string stream output operations
(class template)
implements high-level string stream input/output operations
(class template)
Array I/O implementations
Defined in header <strstream>
(deprecated)
implements raw character array device
(class)
(deprecated)
implements character array input operations
(class)
(deprecated)
implements character array output operations
(class)
(deprecated)
implements character array input/output operations
(class)

Typedefs

The following typedefs for common character types are provided:

typedef basic_ios<char>                ios;
typedef basic_ios<wchar_t>            wios;
 
typedef basic_streambuf<char>     streambuf;
typedef basic_streambuf<wchar_t> wstreambuf;
typedef basic_filebuf<char>         filebuf;
typedef basic_filebuf<wchar_t>     wfilebuf;
typedef basic_stringbuf<char>     stringbuf;
typedef basic_stringbuf<wchar_t> wstringbuf;
 
typedef basic_istream<char>         istream;
typedef basic_istream<wchar_t>     wistream;
typedef basic_ostream<char>         ostream;
typedef basic_ostream<wchar_t>     wostream;
typedef basic_iostream<char>       iostream;
typedef basic_iostream<wchar_t>   wiostream;
 
typedef basic_ifstream<char>       ifstream;
typedef basic_ifstream<wchar_t>   wifstream;
typedef basic_ofstream<char>       ofstream;
typedef basic_ofstream<wchar_t>   wofstream;
typedef basic_fstream<char>         fstream;
typedef basic_fstream<wchar_t>     wfstream;
 
typedef basic_istringstream<char>     istringstream;
typedef basic_istringstream<wchar_t> wistringstream;
typedef basic_ostringstream<char>     ostringstream;
typedef basic_ostringstream<wchar_t> wostringstream;
typedef basic_stringstream<char>       stringstream;
typedef basic_stringstream<wchar_t>   wstringstream;

Predefined standard stream objects

Defined in header <iostream>
reads from the standard C input stream stdin
(global object)[edit]
writes to the standard C output stream stdout
(global object)[edit]
writes to the standard C error stream stderr, unbuffered
(global object)[edit]
writes to the standard C error stream stderr
(global object)[edit]

I/O Manipulators

The stream-based I/O library uses I/O manipulators (e.g. std::boolalpha, std::hex, etc.) to control how streams behave.

Types

The following auxiliary types are defined:

Defined in header <ios>
represents relative file/stream position (offset from fpos), sufficient to represent any file size
(typedef)
represents the number of characters transferred in an I/O operation or the size of an I/O buffer
(typedef)
represents absolute position in a stream or a file
(class template)

The following specializations of std::fpos are provided:

Defined in header <ios>
Type Definition
streampos std::fpos<std::char_traits<char>::state_type>
wstreampos std::fpos<std::char_traits<wchar_t>::state_type>

Error category interface

Defined in header <ios>
(C++11)
the IO stream error codes
(enum) [edit]
identifies the iostream error category
(function) [edit]

C-style IO

C++ also includes the input/output functions defined by C, such as std::fopen, std::getc, etc.