File: istream

package info (click to toggle)
cppreference-doc 20151129%2Bdfsg0-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 220,072 kB
  • ctags: 451
  • sloc: xml: 474,959; python: 1,770; php: 263; makefile: 162; sh: 30; cpp: 9; ansic: 9
file content (153 lines) | stat: -rw-r--r-- 5,606 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
/*  Copyright (C) 2015  Povilas Kanapickas <povilas@radix.lt>

    This file is part of cppreference-doc

    This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
    Unported License. To view a copy of this license, visit
    http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative
    Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.

    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.3 or
    any later version published by the Free Software Foundation; with no
    Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
*/

#ifndef CPPREFERENCE_ISTREAM_H
#define CPPREFERENCE_ISTREAM_H

namespace std {

template <
    class CharT,
    class Traits = std::char_traits<CharT>
    > class basic_istream : virtual public std::basic_ios<CharT, Traits> {
public:
    explicit basic_istream(std::basic_streambuf<CharT, Traits>* sb);
    virtual ~basic_istream();

    basic_istream& operator>>(short& value);
    basic_istream& operator>>(unsigned short& value);
    basic_istream& operator>>(int& value);
    basic_istream& operator>>(unsigned int& value);
    basic_istream& operator>>(long& value);
    basic_istream& operator>>(unsigned long& value);
#if CPPREFERENCE_STDVER>= 2011
    basic_istream& operator>>(long long& value);
    basic_istream& operator>>(unsigned long long& value);
#endif
    basic_istream& operator>>(float& value);
    basic_istream& operator>>(double& value);
    basic_istream& operator>>(long double& value);
    basic_istream& operator>>(bool& value);
    basic_istream& operator>>(void*& value);
    basic_istream& operator>>(basic_istream& st,
                              std::ios_base & (*func)(std::ios_base&));
    basic_istream& operator>>(basic_istream& st,
                              std::basic_ios<CharT, Traits>& (*func)(std::basic_ios<CharT, Traits>&));
    basic_istream& operator>>(basic_istream& st,
                              std::basic_istream & (*func)(std::basic_istream&));
    basic_istream& operator>>(basic_istream& st,
                              std::basic_streambuf<CharT, Traits>* sb);

    int_type get();
    basic_istream& get(char_type& ch);
    basic_istream& get(char_type* s, std::streamsize count);
    basic_istream& get(char_type* s, std::streamsize count, char_type delim);
    basic_istream& get(basic_streambuf& strbuf);
    basic_istream& get(basic_streambuf& strbuf, char_type delim);

    int_type peek();
    basic_istream& unget();
    basic_istream& putback(char_type ch);
    basic_istream& getline(char_type* s, std::streamsize count);
    basic_istream& getline(char_type* s, std::streamsize count, char_type delim);
    basic_istream& ignore(std::streamsize count = 1, int_type delim = Traits::eof());
    basic_istream& read(char_type* s, std::streamsize count);
    std::streamsize readsome(char_type* s, std::streamsize count);
    std::streamsize gcount() const;
    pos_type tellg();
    basic_istream& seekg(pos_type pos);
    basic_istream& seekg(off_type off, std::ios_base::seekdir dir);
    int sync();

    class sentry {
    public:
        typedef Traits traits_type;
        explicit sentry(std::basic_istream<CharT, Traits>& is, bool noskipws = false);
        ~sentry();
        explicit operator bool() const;
    };

protected:
#if CPPREFERENCE_STDVER>= 2011
    basic_istream(const basic_istream& rhs) = delete;
    basic_istream(basic_istream&& rhs);
#endif

    basic_istream& operator=(const basic_istream& rhs) = delete;
#if CPPREFERENCE_STDVER>= 2011
    basic_istream& operator=(basic_istream&& rhs);
    void swap(basic_istream& rhs);
#endif
};

typedef basic_istream<char> istream;
typedef basic_istream<wchar_t> wistream;

extern istream cin;
extern wistream wcin;

template <
    class CharT,
    class Traits = std::char_traits<CharT>
    > class basic_iostream : public std::basic_istream<CharT, Traits>,
    public basic_ostream<CharT, Traits> {
public:
    explicit basic_iostream(std::basic_streambuf<CharT, Traits>* sb);

protected:
#if CPPREFERENCE_STDVER>= 2011
    basic_iostream(const basic_iostream& other) = delete;
    basic_iostream(basic_iostream&& other);
#endif

    basic_iostream& operator=(const basic_iostream& rhs) = delete;
#if CPPREFERENCE_STDVER>= 2011
    basic_iostream& operator=(basic_iostream&& rhs);
    void swap(basic_iostream& rhs);
#endif
};

typedef basic_iostream<char> iostream;
typedef basic_iostream<wchar_t> wiostream;

template<class CharT, class Traits>
basic_istream<CharT, Traits>& operator>>(basic_istream<CharT, Traits>& st, CharT& ch);

template<class Traits>
basic_istream<char, Traits>& operator>>(basic_istream<char, Traits>& st, signed char& ch);

template<class Traits>
basic_istream<char, Traits>& operator>>(basic_istream<char, Traits>& st, unsigned char& ch);

template<class CharT, class Traits>
basic_istream<CharT, Traits>& operator>>(basic_istream<CharT, Traits>& st, CharT* s);

template<class Traits>
basic_istream<char, Traits>& operator>>(basic_istream<char, Traits>& st, signed char* s);

template<class Traits>
basic_istream<char, Traits>& operator>>(basic_istream<char, Traits>& st, unsigned char* s);

template<class CharT, class Traits, class T>
basic_istream<CharT, Traits>& operator>>(basic_istream<CharT, Traits>&& st, T& value);

#if CPPREFERENCE_STDVER>= 2011
template<class CharT, class Traits>
std::basic_istream<CharT, Traits>& ws(std::basic_istream<CharT, Traits>& is);
#endif

} // namespace std

#endif // CPPREFERENCE_ISTREAM_H