Kelas basic_filebuf
Menjelaskan buffer aliran yang mengontrol transmisi elemen jenis Char_T, yang sifat karakternya ditentukan oleh kelas Tr, ke dan dari urutan elemen yang disimpan dalam file eksternal.
Sintaks
template <class Char_T, class Tr = char_traits<Char_T>>
class basic_filebuf : public basic_streambuf<Char_T, Tr>
Parameter
Char_T
Elemen dasar buffer file.
Tr
Ciri-ciri elemen dasar buffer file (biasanya char_traits<Char_T>
).
Keterangan
Templat kelas menjelaskan buffer aliran yang mengontrol transmisi elemen jenis Char_T, yang sifat karakternya ditentukan oleh kelas Tr, ke dan dari urutan elemen yang disimpan dalam file eksternal.
Catatan
Objek jenis basic_filebuf
dibuat dengan buffer internal jenis karakter* terlepas dari char_type
yang ditentukan oleh parameter jenis Char_T. Ini berarti bahwa string Unicode (berisi wchar_t
karakter) akan dikonversi ke string ANSI (berisi char
karakter) sebelum ditulis ke buffer internal. Untuk menyimpan string Unicode di buffer, buat buffer wchar_t
jenis baru dan atur menggunakan basic_streambuf::pubsetbuf
()
metode . Untuk melihat contoh yang menunjukkan perilaku ini, lihat di bawah ini.
Objek kelas basic_filebuf<Char_T, Tr>
menyimpan penunjuk file, yang menunjuk FILE
objek yang mengontrol aliran yang terkait dengan file terbuka. Ini juga menyimpan pointer ke dua faset konversi file untuk digunakan oleh fungsi anggota yang dilindungi meluap dan underflow. Untuk informasi selengkapnya, lihat basic_filebuf::open
.
Contoh
Contoh berikut menunjukkan cara memaksa objek jenis basic_filebuf<wchar_t>
untuk menyimpan karakter Unicode di buffer internalnya dengan memanggil pubsetbuf()
metode .
// unicode_basic_filebuf.cpp
// compile with: /EHsc
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include <memory.h>
#include <string.h>
#define IBUFSIZE 16
using namespace std;
void hexdump(const string& filename);
int main()
{
wchar_t* wszHello = L"Hello World";
wchar_t wBuffer[128];
basic_filebuf<wchar_t> wOutFile;
// Open a file, wcHello.txt, then write to it, then dump the
// file's contents in hex
wOutFile.open("wcHello.txt",
ios_base::out | ios_base::trunc | ios_base::binary);
if(!wOutFile.is_open())
{
cout << "Error Opening wcHello.txt\n";
return -1;
}
wOutFile.sputn(wszHello, (streamsize)wcslen(wszHello));
wOutFile.close();
cout << "Hex Dump of wcHello.txt - note that output is ANSI chars:\n";
hexdump(string("wcHello.txt"));
// Open a file, wwHello.txt, then set the internal buffer of
// the basic_filebuf object to be of type wchar_t, then write
// to the file and dump the file's contents in hex
wOutFile.open("wwHello.txt",
ios_base::out | ios_base::trunc | ios_base::binary);
if(!wOutFile.is_open())
{
cout << "Error Opening wwHello.txt\n";
return -1;
}
wOutFile.pubsetbuf(wBuffer, (streamsize)128);
wOutFile.sputn(wszHello, (streamsize)wcslen(wszHello));
wOutFile.close();
cout << "\nHex Dump of wwHello.txt - note that output is wchar_t chars:\n";
hexdump(string("wwHello.txt"));
return 0;
}
// dump contents of filename to stdout in hex
void hexdump(const string& filename)
{
fstream ifile(filename.c_str(),
ios_base::in | ios_base::binary);
char *ibuff = new char[IBUFSIZE];
char *obuff = new char[(IBUFSIZE*2)+1];
int i;
if(!ifile.is_open())
{
cout << "Cannot Open " << filename.c_str()
<< " for reading\n";
return;
}
if(!ibuff || !obuff)
{
cout << "Cannot Allocate buffers\n";
ifile.close();
return;
}
while(!ifile.eof())
{
memset(obuff,0,(IBUFSIZE*2)+1);
memset(ibuff,0,IBUFSIZE);
ifile.read(ibuff,IBUFSIZE);
// corner case where file is exactly a multiple of
// 16 bytes in length
if(ibuff[0] == 0 && ifile.eof())
break;
for(i = 0; i < IBUFSIZE; i++)
{
if(ibuff[i] >= ' ')
obuff[i] = ibuff[i];
else
obuff[i] = '.';
cout << setfill('0') << setw(2) << hex
<< (int)ibuff[i] << ' ';
}
cout << " " << obuff << endl;
}
ifile.close();
}
Hex Dump of wcHello.txt - note that output is ANSI chars:
48 65 6c 6c 6f 20 57 6f 72 6c 64 00 00 00 00 00 Hello World.....
Hex Dump of wwHello.txt - note that output is wchar_t chars:
48 00 65 00 6c 00 6c 00 6f 00 20 00 57 00 6f 00 H.e.l.l.o. .W.o.
72 00 6c 00 64 00 00 00 00 00 00 00 00 00 00 00 r.l.d...........
Konstruktor
Konstruktor | Deskripsi |
---|---|
basic_filebuf | Membuat objek jenis basic_filebuf . |
Typedefs
Nama jenis | Deskripsi |
---|---|
char_type | Mengaitkan nama jenis dengan Char_T parameter templat. |
int_type | Membuat jenis ini dalam basic_filebuf cakupan yang setara dengan jenis nama yang sama dalam Tr cakupan. |
off_type | Membuat jenis ini dalam basic_filebuf cakupan yang setara dengan jenis nama yang sama dalam Tr cakupan. |
pos_type | Membuat jenis ini dalam basic_filebuf cakupan yang setara dengan jenis nama yang sama dalam Tr cakupan. |
traits_type | Mengaitkan nama jenis dengan Tr parameter templat. |
Fungsi anggota
Fungsi anggota | Deskripsi |
---|---|
tutup | Menutup berkas. |
is_open | Menunjukkan apakah file terbuka. |
buka | Membuka file. |
tumpah | Fungsi virtual terproteksi yang dapat dipanggil ketika karakter baru dimasukkan ke dalam buffer penuh. |
pbackfail | Fungsi anggota virtual yang dilindungi mencoba mengembalikan elemen ke dalam aliran input, lalu menjadikannya elemen saat ini (ditujukkan ke penunjuk berikutnya). |
seekoff | Fungsi anggota virtual yang dilindungi mencoba mengubah posisi saat ini untuk aliran yang dikontrol. |
seekpos | Fungsi anggota virtual yang dilindungi mencoba mengubah posisi saat ini untuk aliran yang dikontrol. |
setbuf | Fungsi anggota virtual yang dilindungi melakukan operasi khusus untuk setiap buffer aliran turunan. |
Swap | Menukar konten ini basic_filebuf dengan konten parameter yang disediakan basic_filebuf . |
Sync | Fungsi virtual yang dilindungi mencoba menyinkronkan aliran terkontrol dengan aliran eksternal terkait. |
uflow | Fungsi virtual yang dilindungi untuk mengekstrak elemen saat ini dari aliran input. |
aliran bawah | Fungsi virtual yang dilindungi untuk mengekstrak elemen saat ini dari aliran input. |
Persyaratan
Header:<fstream>
Namespace: std
basic_filebuf::basic_filebuf
Membuat objek jenis basic_filebuf
.
basic_filebuf();
basic_filebuf(basic_filebuf&& right);
Keterangan
Konstruktor pertama menyimpan pointer null di semua pointer yang mengontrol buffer input dan buffer output. Ini juga menyimpan pointer null di penunjuk file.
Konstruktor kedua menginisialisasi objek dengan konten right
, diperlakukan sebagai referensi rvalue.
basic_filebuf::char_type
Mengaitkan nama jenis dengan Char_T
parameter templat.
typedef Char_T char_type;
basic_filebuf::close
Menutup berkas.
basic_filebuf<Char_T, Tr> *close();
Tampilkan Nilai
Fungsi anggota mengembalikan penunjuk null jika penunjuk file adalah penunjuk null.
Keterangan
close
fclose(fp)
memanggil . Jika fungsi tersebut mengembalikan nilai bukan nol, fungsi mengembalikan penunjuk null. Jika tidak, ia kembali this
untuk menunjukkan bahwa file berhasil ditutup.
Untuk aliran lebar, jika ada penyisipan yang terjadi sejak aliran dibuka, atau sejak panggilan terakhir ke streampos
, fungsi memanggil overflow
. Ini juga menyisipkan urutan apa pun yang diperlukan untuk memulihkan status konversi awal, dengan menggunakan faset fac
konversi file untuk memanggil fac.unshift
sesuai kebutuhan. Setiap elemen byte
jenis char
yang dihasilkan ditulis ke aliran terkait yang ditunjuk oleh penunjuk fp
file seolah-olah oleh panggilan formulir fputc(byte, fp)
berturut-turut . Jika panggilan ke fac.unshift
atau penulisan apa pun gagal, fungsi tidak berhasil.
Contoh
Sampel berikut mengasumsikan dua file dalam direktori saat ini: basic_filebuf_close.txt (kontennya adalah "pengujian") dan iotest.txt (kontennya adalah "ssss").
// basic_filebuf_close.cpp
// compile with: /EHsc
#include <fstream>
#include <iostream>
int main() {
using namespace std;
ifstream file;
basic_ifstream <wchar_t> wfile;
char c;
// Open and close with a basic_filebuf
file.rdbuf()->open( "basic_filebuf_close.txt", ios::in );
file >> c;
cout << c << endl;
file.rdbuf( )->close( );
// Open/close directly
file.open( "iotest.txt" );
file >> c;
cout << c << endl;
file.close( );
// open a file with a wide character name
wfile.open( L"iotest.txt" );
// Open and close a nonexistent with a basic_filebuf
file.rdbuf()->open( "ziotest.txt", ios::in );
cout << file.fail() << endl;
file.rdbuf( )->close( );
// Open/close directly
file.open( "ziotest.txt" );
cout << file.fail() << endl;
file.close( );
}
t
s
0
1
basic_filebuf::int_type
Membuat jenis ini dalam basic_filebuf
cakupan yang setara dengan jenis nama yang sama dalam Tr
cakupan.
typedef typename traits_type::int_type int_type;
basic_filebuf::is_open
Menunjukkan apakah file terbuka.
bool is_open() const;
Tampilkan Nilai
true
jika penunjuk file tidak null.
Contoh
// basic_filebuf_is_open.cpp
// compile with: /EHsc
#include <fstream>
#include <iostream>
int main( )
{
using namespace std;
ifstream file;
cout << boolalpha << file.rdbuf( )->is_open( ) << endl;
file.open( "basic_filebuf_is_open.cpp" );
cout << file.rdbuf( )->is_open( ) << endl;
}
false
true
basic_filebuf::off_type
Membuat jenis ini dalam basic_filebuf
cakupan yang setara dengan jenis nama yang sama dalam Tr
cakupan.
typedef typename traits_type::off_type off_type;
basic_filebuf::open
Membuka file.
basic_filebuf<Char_T, Tr> *open(
const char* filename,
ios_base::openmode mode,
int protection = (int)ios_base::_Openprot);
basic_filebuf<Char_T, Tr> *open(
const char* filename,
ios_base::openmode mode);
basic_filebuf<Char_T, Tr> *open(
const wchar_t* filename,
ios_base::openmode mode,
int protection = (int)ios_base::_Openprot);
basic_filebuf<Char_T, Tr> *open(
const wchar_t* filename,
ios_base::openmode mode);
Parameter
filename
Nama file yang akan dibuka.
mode
Salah satu enumerasi dalam ios_base::openmode
.
perlindungan
Perlindungan pembukaan file default, setara dengan parameter shflag di _fsopen, _wfsopen.
Tampilkan Nilai
Jika buffer sudah terbuka, atau jika penunjuk file adalah penunjuk null, fungsi mengembalikan penunjuk null. Jika tidak, ia kembali this
.
Keterangan
Fungsi ini menggunakan FILE *
untuk mendukung basic_filebuf
seolah-olah Anda telah memanggil fopen/wfopen
(filename, strmode)
. strmode
ditentukan dari mode & ~(
)
ate
|
binary
:
ios_base::in
"r"
menjadi (buka file yang ada untuk dibaca).- ios_base::out atau
ios_base::out | ios_base::trunc
menjadi"w"
(potong file yang ada atau buat untuk menulis). ios_base::out | app
"a"
menjadi (buka file yang ada untuk menambahkan semua tulisan).ios_base::in | ios_base::out
"r+"
menjadi (buka file yang ada untuk membaca dan menulis).ios_base::in | ios_base::out | ios_base::trunc
"w+"
menjadi (memotong file yang ada atau membuat untuk membaca dan menulis).ios_base::in | ios_base::out | ios_base::app
"a+"
menjadi (buka file yang ada untuk membaca dan untuk menambahkan semua tulisan).
Jika mode & ios_base::binary
bukan nol, fungsi ditambahkan b
ke untuk strmode
membuka aliran biner alih-alih aliran teks.
Jika mode & ios_base::ate
bukan nol dan file berhasil dibuka, lokasi saat ini di aliran diposisikan di akhir file. Jika gagal, file ditutup.
Jika operasi di atas berhasil diselesaikan, faset konversi file ditentukan: use_facet<codecvt<Char_T, char, traits_type::
state_type
)
> >(
getloc
, untuk digunakan oleh aliran bawah dan luapan.
Jika file tidak berhasil dibuka, nullptr
dikembalikan.
Contoh
Lihat basic_filebuf::close
contoh yang menggunakan open
.
basic_filebuf::operator=
Tetapkan isi objek buffer aliran ini. Ini adalah penetapan pemindahan yang melibatkan rvalue yang tidak meninggalkan salinan di belakang.
basic_filebuf& operator=(basic_filebuf&& right);
Parameter
right
Referensi rvalue ke objek basic_filebuf .
Tampilkan Nilai
Menampilkan *this
.
Keterangan
Operator anggota menggantikan konten objek dengan menggunakan konten right
, diperlakukan sebagai referensi rvalue. Untuk informasi selengkapnya, lihat Deklarator referensi Rvalue: &&&.
basic_filebuf::overflow
Dipanggil ketika karakter baru dimasukkan ke dalam buffer penuh.
virtual int_type overflow(int_type _Meta = traits_type::eof);
Parameter
_Meta
Karakter yang akan dimasukkan ke dalam buffer atau traits_type::eof
.
Tampilkan Nilai
Jika fungsi tidak berhasil, fungsi akan mengembalikan traits_type::eof
. Jika tidak, ia kembali traits_type::
not_eof
(_Meta)
.
Keterangan
Jika _Meta != traits_type::
eof
, fungsi anggota virtual yang dilindungi mencoba memasukkan elemen(_Meta)
ch = traits_type::
to_char_type
ke dalam buffer output. Ini dapat melakukannya dengan berbagai cara:
Jika posisi tulis tersedia, ia dapat menyimpan elemen ke dalam posisi tulis dan menaikkan pointer berikutnya untuk buffer output.
Ini dapat membuat posisi tulis tersedia dengan mengalokasikan penyimpanan baru atau tambahan untuk buffer output.
Ini dapat mengonversi output yang tertunda dalam buffer output, diikuti oleh
ch
, dengan menggunakan fasetfac
konversi file untuk memanggilfac.out
sesuai kebutuhan. Setiap elemench
karakter jenis yang diproduksi ditulis ke aliran terkait yang ditunjuk oleh penunjukfp
file seolah-olah dengan panggilan berturut-turut dari formulirfputc(ch, fp)
. Jika ada konversi atau penulisan yang gagal, fungsi tidak berhasil.
basic_filebuf::p backfail
Mencoba mengembalikan elemen ke aliran input, lalu menjadikannya elemen saat ini (ditujukkan ke penunjuk berikutnya).
virtual int_type pbackfail(int_type _Meta = traits_type::eof);
Parameter
_Meta
Karakter yang akan dimasukkan ke dalam buffer, atau traits_type::eof
.
Tampilkan Nilai
Jika fungsi tidak berhasil, fungsi akan mengembalikan traits_type::eof
. Jika tidak, ia kembali traits_type::
not_eof
(_Meta)
.
Keterangan
Fungsi anggota virtual yang dilindungi mengembalikan elemen ke dalam buffer input dan kemudian menjadikannya elemen saat ini (ditujukkan ke penunjuk berikutnya). Jika _Meta == traits_type::
eof
, elemen untuk mendorong kembali secara efektif yang sudah ada di aliran sebelum elemen saat ini. Jika tidak, elemen tersebut digantikan oleh ch = traits_type::
to_char_type
(_Meta)
. Fungsi ini dapat mengembalikan elemen dengan berbagai cara:
putback
Jika posisi tersedia, dan elemen yang disimpan di sana dibandingkan denganch
, itu dapat mengurangi penunjuk berikutnya untuk buffer input.Jika fungsi dapat membuat
putback
posisi tersedia, fungsi dapat melakukannya, mengatur penunjuk berikutnya untuk mengarah ke posisi tersebut, dan menyimpanch
di posisi tersebut.Jika fungsi dapat mendorong kembali elemen ke aliran input, fungsi dapat melakukannya, seperti dengan memanggil
ungetc
elemen jenischar
.
basic_filebuf::p os_type
Membuat jenis ini dalam basic_filebuf
cakupan yang setara dengan jenis nama yang sama dalam Tr
cakupan.
typedef typename traits_type::pos_type pos_type;
basic_filebuf::seekoff
Mencoba mengubah posisi saat ini untuk aliran yang dikontrol.
virtual pos_type seekoff(
off_type _Off,
ios_base::seekdir _Way,
ios_base::openmode _Which = ios_base::in | ios_base::out);
Parameter
_Off
Posisi yang dicari relatif terhadap _Way.
_Jalan
Titik awal untuk operasi offset. Lihat seekdir untuk kemungkinan nilai.
_Yang mana
Menentukan mode untuk posisi penunjuk. Defaultnya adalah memungkinkan Anda mengubah posisi baca dan tulis.
Tampilkan Nilai
Mengembalikan posisi baru atau posisi aliran yang tidak valid.
Keterangan
Fungsi anggota virtual yang dilindungi mencoba mengubah posisi saat ini untuk aliran yang dikontrol. Untuk objek kelas basic_filebuf
<Char_T, Tr>
, posisi aliran dapat diwakili oleh objek jenis fpos_t
, yang menyimpan offset dan informasi status apa pun yang diperlukan untuk mengurai aliran yang luas. Offset nol mengacu pada elemen pertama aliran. (Objek jenis pos_type
menyimpan setidaknya objek fpos_t
.)
Untuk file yang dibuka untuk pembacaan dan penulisan, aliran input dan output diposisikan bersamaan. Untuk beralih antara menyisipkan dan mengekstrak, Anda harus memanggil atau pubseekoff
pubseekpos
. Panggilan ke pubseekoff
(dan karenanya ke seekoff
) memiliki berbagai batasan untuk aliran teks, aliran biner, dan aliran luas.
Jika penunjuk fp
file adalah penunjuk null, fungsi gagal. Jika tidak, ia mencoba mengubah posisi aliran dengan memanggil fseek(fp, _Off, _Way)
. Jika fungsi tersebut berhasil dan posisi fposn
yang dihasilkan dapat ditentukan dengan memanggil fgetpos(fp, &fposn)
, fungsi berhasil. Jika fungsi berhasil, fungsi akan mengembalikan nilai jenis pos_type
yang berisi fposn
. Jika tidak, ia mengembalikan posisi aliran yang tidak valid.
basic_filebuf::seekpos
Mencoba mengubah posisi saat ini untuk aliran yang dikontrol.
virtual pos_type seekpos(
pos_type _Sp,
ios_base::openmode _Which = ios_base::in | ios_base::out);
Parameter
_Sp
Posisi yang dicari.
_Yang mana
Menentukan mode untuk posisi penunjuk. Defaultnya adalah memungkinkan Anda mengubah posisi baca dan tulis.
Tampilkan Nilai
Jika penunjuk fp
file adalah penunjuk null, fungsi gagal. Jika tidak, ia mencoba mengubah posisi aliran dengan memanggil fsetpos(fp, &fposn)
, di mana fposn
adalah objek yang fpos_t
disimpan di pos
. Jika fungsi tersebut berhasil, fungsi akan mengembalikan pos
. Jika tidak, ia mengembalikan posisi aliran yang tidak valid. Untuk menentukan apakah posisi aliran tidak valid, bandingkan nilai yang dikembalikan dengan pos_type(off_type(-1))
.
Keterangan
Fungsi anggota virtual yang dilindungi mencoba mengubah posisi saat ini untuk aliran yang dikontrol. Untuk objek kelas basic_filebuf
<Char_T, Tr>
, posisi aliran dapat diwakili oleh objek jenis fpos_t
, yang menyimpan offset dan informasi status apa pun yang diperlukan untuk mengurai aliran yang luas. Offset nol mengacu pada elemen pertama aliran. (Objek jenis pos_type
menyimpan setidaknya objek fpos_t
.)
Untuk file yang dibuka untuk pembacaan dan penulisan, aliran input dan output diposisikan bersamaan. Untuk beralih antara menyisipkan dan mengekstrak, Anda harus memanggil atau pubseekoff
pubseekpos
. Panggilan ke pubseekoff
(dan ke ) memiliki berbagai batasan seekoff
untuk aliran teks, aliran biner, dan aliran luas.
Untuk aliran lebar, jika ada penyisipan yang terjadi sejak aliran dibuka, atau sejak panggilan terakhir ke streampos
, fungsi memanggil overflow
. Ini juga menyisipkan urutan apa pun yang diperlukan untuk memulihkan status konversi awal, dengan menggunakan faset fac
konversi file untuk memanggil fac.unshift
sesuai kebutuhan. Setiap elemen byte
jenis char
yang dihasilkan ditulis ke aliran terkait yang ditunjuk oleh penunjuk fp
file seolah-olah oleh panggilan formulir fputc(byte, fp)
berturut-turut . Jika panggilan ke fac.unshift
atau penulisan apa pun gagal, fungsi tidak berhasil.
basic_filebuf::setbuf
Melakukan operasi khusus untuk setiap buffer aliran turunan.
virtual basic_streambuf<Char_T, Tr> *setbuf(
char_type* _Buffer,
streamsize count);
Parameter
_Buffer
Penunjuk ke buffer.
count
Ukuran buffer.
Tampilkan Nilai
Fungsi anggota yang dilindungi mengembalikan nol jika penunjuk fp
file adalah penunjuk null.
Keterangan
setbuf
setvbuf( fp, (char*) _Buffer, _IOFBF, count * sizeof( Char_T))
panggilan untuk menawarkan array count
elemen yang dimulai pada _Buffer sebagai buffer untuk aliran. Jika fungsi tersebut mengembalikan nilai bukan nol, fungsi mengembalikan penunjuk null. Jika tidak, ia kembali ke kesuksesan this
sinyal.
basic_filebuf::swap
Menukar isi ini basic_filebuf
dengan konten yang disediakan basic_filebuf
.
void swap(basic_filebuf& right);
Parameter
right
Referensi lvalue ke lainnya basic_filebuf
.
basic_filebuf::sync
Mencoba menyinkronkan aliran terkontrol dengan aliran eksternal terkait.
virtual int sync();
Tampilkan Nilai
Mengembalikan nol jika penunjuk fp
file adalah penunjuk null. Jika tidak, ia mengembalikan nol hanya jika panggilan ke luapan dan fflush(fp)
berhasil menghapus output yang tertunda ke aliran.
basic_filebuf::traits_type
Mengaitkan nama jenis dengan Tr
parameter templat.
typedef Tr traits_type;
basic_filebuf::underflow
Mengekstrak elemen saat ini dari aliran input.
virtual int_type underflow();
Tampilkan Nilai
Jika fungsi tidak berhasil, fungsi akan mengembalikan traits_type::
eof
. Jika tidak, ia mengembalikan ch
, dikonversi seperti yang dijelaskan di bagian Keterangan.
Keterangan
Fungsi anggota virtual yang dilindungi mencoba mengekstrak elemen ch
saat ini dari aliran input, dan mengembalikan elemen sebagaito_int_type
traits_type::
(ch)
. Ini dapat melakukannya dengan berbagai cara:
Jika posisi baca tersedia, diperlukan
ch
sebagai elemen yang disimpan dalam posisi baca dan memajukan penunjuk berikutnya untuk buffer input.Ini dapat membaca satu atau beberapa elemen jenis
char
, seolah-olah dengan panggilan formulirfgetc(fp)
berturut-turut , dan mengonversinya menjadi elemench
jenisChar_T
dengan menggunakan fasetfac
konversi file untuk memanggilfac.in
sesuai kebutuhan. Jika ada baca atau konversi yang gagal, fungsi tidak berhasil.
Lihat juga
<fstream>
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