Bagikan melalui


Kelas basic_ostream

Templat kelas ini menjelaskan objek yang mengontrol penyisipan elemen dan objek yang dikodekan ke dalam buffer aliran dengan elemen jenis Elem, juga dikenal sebagai char_type, yang sifat karakternya ditentukan oleh kelas Tr, juga dikenal sebagai traits_type.

Sintaks

template <class Elem, class Tr = char_traits<Elem>>
class basic_ostream : virtual public basic_ios<Elem, Tr>

Parameter

Elem
char_type.

Tr
Karakter traits_type.

Keterangan

Sebagian besar fungsi anggota yang operator<< kelebihan beban adalah fungsi output yang diformat. Mereka mengikuti pola:

iostate state = goodbit;
const sentry ok(*this);

if (ok)
{try
{<convert and insert elements
    accumulate flags in state> }
    catch (...)
{try
{setstate(badbit);

}
    catch (...)
{}
    if ((exceptions()& badbit) != 0)
    throw; }}
width(0);
// Except for operator<<(Elem)
setstate(state);

return (*this);

Dua fungsi anggota lainnya adalah fungsi output yang tidak diformat. Mereka mengikuti pola:

iostate state = goodbit;
const sentry ok(*this);

if (!ok)
    state |= badbit;
else
{try
{<obtain and insert elements
    accumulate flags in state> }
    catch (...)
{try
{setstate(badbit);

}
    catch (...)
{}
    if ((exceptions()& badbit) != 0)
    throw; }}
setstate(state);

return (*this);

Kedua grup fungsi memanggil setstate(badbit) jika mengalami kegagalan saat menyisipkan elemen.

Objek kelas basic_istream<Elem, Tr> hanya menyimpan objek dasar publik virtual kelas basic_ios<Elem, Tr.>

Contoh

Lihat contoh kelas basic_ofstream untuk mempelajari selengkapnya tentang aliran output.

Konstruktor

Konstruktor Deskripsi
basic_ostream Membuat basic_ostream objek.

Fungsi anggota

Fungsi anggota Deskripsi
Flush Bersihkan buffer.
put Menempatkan karakter dalam aliran.
seekp Mengatur ulang posisi dalam aliran output.
Sentry Kelas berlapis menjelaskan objek yang deklarasinya menyusun fungsi output yang diformat dan fungsi output yang tidak diformat.
tukar Menukar nilai objek ini basic_ostream dengan objek yang disediakan basic_ostream .
tellp Melaporkan posisi dalam aliran output.
tulis Menempatkan karakter dalam aliran.

Operator

Operator Deskripsi
operator= Menetapkan nilai parameter objek yang disediakan basic_ostream ke objek ini.
operator<< Menulis ke aliran.

Persyaratan

Header:<ostream>

Namespace: std

basic_ostream::basic_ostream

Membuat basic_ostream objek.

explicit basic_ostream(
    basic_streambuf<Elem, Tr>* strbuf,
    bool _Isstd = false);

basic_ostream(basic_ostream&& right);

Parameter

strbuf
Objek jenis basic_streambuf.

_Isstd
true jika ini adalah aliran standar; jika tidak, false.

right
Referensi rvalue ke objek jenis basic_ostream.

Keterangan

Konstruktor pertama menginisialisasi kelas dasar dengan memanggil init(strbuf). Konstruktor kedua menginisialisasi kelas dasar dengan memanggil basic_ios::move(right).

Contoh

Lihat contoh untuk basic_ofstream::basic_ofstream untuk mempelajari selengkapnya tentang aliran output.

basic_ostream::flush

Bersihkan buffer.

basic_ostream<Elem, Tr>& flush();

Tampilkan Nilai

Referensi ke objek basic_ostream.

Keterangan

Jika rdbuf bukan penunjuk null, fungsi memanggil rdbuf-pubsync>. Jika itu mengembalikan -1, fungsi memanggil setstate(badbit). Ini mengembalikan *ini.

Contoh

// basic_ostream_flush.cpp
// compile with: /EHsc
#include <iostream>

int main( )
{
   using namespace std;
   cout << "test";
   cout.flush();
}
test

basic_ostream::operator<<

Menulis ke aliran.

basic_ostream<Elem, Tr>& operator<<(
    basic_ostream<Elem, Tr>& (* Pfn)(basic_ostream<Elem, Tr>&));

basic_ostream<Elem, Tr>& operator<<(
    ios_base& (* Pfn)(ios_base&));

basic_ostream<Elem, Tr>& operator<<(
    basic_ios<Elem, Tr>& (* Pfn)(basic_ios<Elem, Tr>&));

basic_ostream<Elem, Tr>& operator<<(basic_streambuf<Elem, Tr>* strbuf);
basic_ostream<Elem, Tr>& operator<<(bool val);
basic_ostream<Elem, Tr>& operator<<(short val);
basic_ostream<Elem, Tr>& operator<<(unsigned short val);
basic_ostream<Elem, Tr>& operator<<(int __w64  val);
basic_ostream<Elem, Tr>& operator<<(unsigned int __w64  val);
basic_ostream<Elem, Tr>& operator<<(long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long __w64  val);
basic_ostream<Elem, Tr>& operator<<(long long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long long val);
basic_ostream<Elem, Tr>& operator<<(float val);
basic_ostream<Elem, Tr>& operator<<(double val);
basic_ostream<Elem, Tr>& operator<<(long double val);
basic_ostream<Elem, Tr>& operator<<(const void* val);

Parameter

Pfn
Penunjuk fungsi.

strbuf
Penunjuk ke stream_buf objek.

Val
Elemen untuk menulis ke aliran.

Tampilkan Nilai

Referensi ke objek basic_ostream.

Keterangan

Header <ostream> juga menentukan beberapa operator penyisipan global. Untuk informasi selengkapnya, lihat operator<<.

Fungsi anggota pertama memastikan bahwa ekspresi formulir ostr << endl memanggil endl(ostr), lalu mengembalikan *ini. Fungsi kedua dan ketiga memastikan bahwa manipulator lain, seperti hex, bersifat serupa. Fungsi yang tersisa adalah semua fungsi output yang diformat.

Fungsi

basic_ostream<Elem, Tr>& operator<<(basic_streambuf<Elem, Tr>* strbuf);

mengekstrak elemen dari strbuf, jika strbuf bukan penunjuk null, dan menyisipkannya. Ekstraksi berhenti di akhir file, atau jika ekstraksi melemparkan pengecualian (yang ditumbuhi kembali). Ini juga berhenti, tanpa mengekstrak elemen yang dimaksud, jika penyisipan gagal. Jika fungsi tidak menyisipkan elemen, atau jika ekstraksi melempar pengecualian, fungsi memanggil setstate(failbit). Bagaimanapun, fungsi mengembalikan *ini.

Fungsi

basic_ostream<Elem, Tr>& operator<<(bool val);

_Val dikonversi ke bidang Boolean dan menyisipkannya dengan memanggil use_facet num_put<<Elem, OutIt(>getloc). put(OutIt(rdbuf), *this, getloc, val). Di sini, OutIt didefinisikan sebagai ostreambuf_iterator<Elem, Tr.> Fungsi mengembalikan *ini.

Fungsi

basic_ostream<Elem, Tr>& operator<<(short val);
basic_ostream<Elem, Tr>& operator<<(unsigned short val);
basic_ostream<Elem, Tr>& operator<<(int val);
basic_ostream<Elem, Tr>& operator<<(unsigned int __w64  val);
basic_ostream<Elem, Tr>& operator<<(long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long val);
basic_ostream<Elem, Tr>& operator<<(long long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long long val);
basic_ostream<Elem, Tr>& operator<<(const void* val);

masing-masing mengonversi val ke bidang numerik dan menyisipkannya dengan memanggil use_facet num_put<<Elem, OutIt>(getloc). put(OutIt(rdbuf), *this, getloc, val). Di sini, OutIt didefinisikan sebagai ostreambuf_iterator<Elem, Tr>. Fungsi mengembalikan *ini.

Fungsi

basic_ostream<Elem, Tr>& operator<<(float val);
basic_ostream<Elem, Tr>& operator<<(double val);
basic_ostream<Elem, Tr>& operator<<(long double val);

masing-masing mengonversi val ke bidang numerik dan memasukkannya dengan memanggil use_facet<num_put<Elem, OutIt>(getloc). put(OutIt(rdbuf), *this, getloc, val). Di sini, OutIt didefinisikan sebagai ostreambuf_iterator<Elem, Tr>. Fungsi mengembalikan *ini.

Contoh

// basic_ostream_op_write.cpp
// compile with: /EHsc
#include <iostream>
#include <string.h>

using namespace std;

ios_base& hex2( ios_base& ib )
{
   ib.unsetf( ios_base::dec );
   ib.setf( ios_base::hex );
   return ib;
}

basic_ostream<char, char_traits<char> >& somefunc(basic_ostream<char, char_traits<char> > &i)
{
    if (i == cout)
    {
        i << "i is cout" << endl;
    }
    return i;
}

class CTxtStreambuf : public basic_streambuf< char, char_traits< char > >
{
public:
    CTxtStreambuf(char *_pszText)
    {
        pszText = _pszText;
        setg(pszText, pszText, pszText + strlen(pszText));
    };
    char *pszText;
};

int main()
{
    cout << somefunc;
    cout << 21 << endl;

    hex2(cout);
    cout << 21 << endl;

    CTxtStreambuf f("text in streambuf");
    cout << &f << endl;
}

basic_ostream::operator=

Menetapkan nilai untuk parameter objek yang disediakan basic_ostream ke objek ini.

basic_ostream& operator=(basic_ostream&& right);

Parameter

right
Referensi rvalue ke basic_ostream objek.

Keterangan

Operator anggota memanggil pertukaran (right).

basic_ostream::p ut

Menempatkan karakter dalam aliran.

basic_ostream<Elem, Tr>& put(char_type _Ch);

Parameter

_Ch
Karakter.

Tampilkan Nilai

Referensi ke objek basic_ostream.

Keterangan

Fungsi output yang tidak diformat menyisipkan elemen _Ch. Ini mengembalikan *ini.

Contoh

// basic_ostream_put.cpp
// compile with: /EHsc
#include <iostream>

int main( )
{
   using namespace std;
   cout.put( 'v' );
   cout << endl;
   wcout.put( L'l' );
}
v
l

basic_ostream::seekp

Reset posisi dalam aliran output.

basic_ostream<Elem, Tr>& seekp(pos_type _Pos);

basic_ostream<Elem, Tr>& seekp(off_type _Off, ios_base::seekdir _Way);

Parameter

_Pos
Posisi dalam aliran.

_Off
Offset relatif terhadap _Way.

_Cara
Salah satu enumerasi ios_base::seekdir .

Tampilkan Nilai

Referensi ke objek basic_ostream.

Keterangan

Jika gagal adalah false, fungsi anggota pertama memanggil newpos =rdbuf-pubseekpos>(_Pos), untuk beberapa pos_type objek newpossementara . Jika fail false, fungsi kedua memanggil newpos = rdbuf-pubseekoff>(_Off, _Way). Dalam kedua kasus, jika (off_type)newpos == (off_type)(-1) (operasi penempatan gagal), maka fungsi memanggil istr.setstate(failbit). Kedua fungsi mengembalikan *ini.

Contoh

// basic_ostream_seekp.cpp
// compile with: /EHsc
#include <fstream>
#include <iostream>

int main()
{
    using namespace std;
    ofstream x("basic_ostream_seekp.txt");
    streamoff i = x.tellp();
    cout << i << endl;
    x << "testing";
    i = x.tellp();
    cout << i << endl;
    x.seekp(2);   // Put char in third char position in file
    x << " ";

    x.seekp(2, ios::end);   // Put char two after end of file
    x << "z";
}
0
7

basic_ostream::sentry

Kelas berlapis menjelaskan objek yang deklarasinya menyusun fungsi output yang diformat dan fungsi output yang tidak diformat.

sentri kelas { publik: sentry eksplisit(basic_ostream<Elem, Tr>& _Ostr); operator bool() const; ~sentry(); };

Keterangan

Kelas berlapis menjelaskan objek yang deklarasinya menyusun fungsi output yang diformat dan fungsi output yang tidak diformat. Jika ostr.baik adalah true dan ostr.dasi bukan pointer null, konstruktor memanggil ostr.tie-flush>. Konstruktor kemudian menyimpan nilai yang dikembalikan oleh ostr.good di status. Panggilan selanjutnya untuk operator bool memberikan nilai tersimpan ini.

Jika pengembalian dan flags&unitbuf bukan nol, destruktor memanggil flush.falseuncaught_exception

basic_ostream::swap

Menukar nilai objek ini basic_ostream dengan nilai yang disediakan basic_ostream.

void swap(basic_ostream& right);

Parameter

right
Referensi ke basic_ostream objek.

Keterangan

Fungsi anggota memanggil basic_ios::swap(right) untuk menukar konten objek ini dengan konten yang tepat.

basic_ostream::tellp

Laporkan posisi dalam aliran output.

pos_type tellp();

Tampilkan Nilai

Posisi dalam aliran output.

Keterangan

Jika gagal adalah false, fungsi anggota mengembalikan rdbuf-pubseekoff>(0, cur, in). Jika tidak, ia mengembalikan pos_type(-1).

Contoh

Lihat seekp untuk contoh menggunakan tellp.

basic_ostream::write

Letakkan karakter dalam aliran.

basic_ostream<Elem, Tr>& write(const char_type* str, streamsize count);

Parameter

count
Jumlah karakter yang akan dimasukkan ke dalam aliran.

Str
Karakter yang akan dimasukkan ke dalam aliran.

Tampilkan Nilai

Referensi ke objek basic_ostream.

Keterangan

Fungsi output yang tidak diformat menyisipkan urutan elemen hitungan yang dimulai pada str.

Contoh

Lihat melakukan streaming untuk contoh menggunakan write.

Baca juga

Keamanan utas di Pustaka Standar C++
Pemrograman iostream
Konvensi iostreams