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 newpos
sementara . 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.false
uncaught_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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk