Aracılığıyla paylaş


basic_filebuf Sınıfı

Karakter özellikleri Tr sınıfı tarafından belirlenen Char_T türündeki öğelerin dış dosyada depolanan öğeler dizisine ve dizisine iletilmesini denetleyen bir akış arabelleği açıklar.

Sözdizimi

template <class Char_T, class Tr = char_traits<Char_T>>
class basic_filebuf : public basic_streambuf<Char_T, Tr>

Parametreler

Char_T
Dosya arabelleğinin temel öğesi.

Tr
Dosya arabelleğinin temel öğesinin özellikleri (genellikle char_traits<Char_T>).

Açıklamalar

Sınıf şablonu, karakter özellikleri Tr sınıfı tarafından belirlenen Char_T türündeki öğelerin bir dış dosyada depolanan öğeler dizisine ve dizisine iletilmesini denetleyen bir akış arabelleği açıklar.

Dekont

türündeki basic_filebuf nesneler, Char_T tür parametresi tarafından belirtilenden char_type bağımsız olarak char* türünde bir iç arabellekle oluşturulur. Bu, bir Unicode dizesinin (karakter içeren wchar_t ) iç arabelleğe yazılmadan önce ANSI dizesine (karakter içeren char ) dönüştürüleceği anlamına gelir. Unicode dizelerini arabellekte depolamak için türünde wchar_t yeni bir arabellek oluşturun ve yöntemini kullanarak basic_streambuf::pubsetbuf() ayarlayın. Bu davranışı gösteren bir örnek görmek için aşağıya bakın.

sınıfının basic_filebuf<Char_T, Tr> nesnesi, açık bir dosyayla ilişkili akışı denetleyen nesneyi belirten bir dosya işaretçisi depolar FILE . Ayrıca, korumalı üye işlevlerinin taşması ve taşması tarafından kullanılmak üzere iki dosya dönüştürme modeline yönelik işaretçileri depolar. Daha fazla bilgi için bkz. basic_filebuf::open.

Örnek

Aşağıdaki örnekte, yöntemini çağırarak türündeki basic_filebuf<wchar_t> bir nesnenin iç arabelleğinde Unicode karakterleri depolamaya nasıl zorlandığı gösterilmektedir pubsetbuf() .

// 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...........

Oluşturucular

Oluşturucu Açıklama
Basic_filebuf türünde basic_filebufbir nesnesi oluşturur.

Tür tanımları

Tür adı Açıklama
Char_type Bir tür adını şablon parametresiyle Char_T ilişkilendirir.
Int_type Bu türü kapsamın içinde basic_filebuf, kapsamdaki aynı adın türüne Tr eşdeğer hale getirir.
off_type Bu türü kapsamın içinde basic_filebuf, kapsamdaki aynı adın türüne Tr eşdeğer hale getirir.
pos_type Bu türü kapsamın içinde basic_filebuf, kapsamdaki aynı adın türüne Tr eşdeğer hale getirir.
traits_type Bir tür adını şablon parametresiyle Tr ilişkilendirir.

Üye işlevleri

Üye işlevi Açıklama
close Bir dosyayı kapatır.
is_open Bir dosyanın açık olup olmadığını gösterir.
open Bir dosya açar.
Taşma Tam arabelleğe yeni bir karakter eklendiğinde çağrılabilen korumalı bir sanal işlev.
pbackfail Korumalı sanal üye işlevi bir öğeyi giriş akışına geri yerleştirmeye çalışır, ardından bunu geçerli öğe yapar (sonraki işaretçi tarafından işaret edilir).
ara Korumalı sanal üye işlevi, denetlenen akışlar için geçerli konumları değiştirmeye çalışır.
seekpos Korumalı sanal üye işlevi, denetlenen akışlar için geçerli konumları değiştirmeye çalışır.
setbuf Korumalı sanal üye işlevi, türetilmiş her akış arabelleğine özel bir işlem gerçekleştirir.
Takas Sağlanan basic_filebuf parametrenin içeriği için bunun basic_filebuf içeriğini değiştirir.
Eşitleme Korumalı, sanal işlev denetlenen akışları ilişkili dış akışlarla eşitlemeye çalışır.
uflow Korumalı, giriş akışından geçerli öğeyi ayıklamak için sanal işlev.
yetersiz akış Korumalı, giriş akışından geçerli öğeyi ayıklamak için sanal işlev.

Gereksinimler

Üst Bilgi:<fstream>

Ad alanı: std

basic_filebuf::basic_filebuf

türünde basic_filebufbir nesnesi oluşturur.

basic_filebuf();

basic_filebuf(basic_filebuf&& right);

Açıklamalar

İlk oluşturucu, giriş arabelleği ve çıkış arabelleği denetleen tüm işaretçilerde null bir işaretçi depolar. Ayrıca, dosya işaretçisinde null bir işaretçi depolar.

İkinci oluşturucu, nesnesini içeriğiyle rightbaşlatır ve rvalue başvurusu olarak değerlendirilir.

basic_filebuf::char_type

Bir tür adını şablon parametresiyle Char_T ilişkilendirir.

typedef Char_T char_type;

basic_filebuf::close

Bir dosyayı kapatır.

basic_filebuf<Char_T, Tr> *close();

İade Değeri

Üye işlevi, dosya işaretçisi null işaretçiyse null bir işaretçi döndürür.

Açıklamalar

close çağrısında bulunur fclose(fp). Bu işlev sıfır olmayan bir değer döndürürse, işlev null bir işaretçi döndürür. Aksi takdirde, dosyanın başarıyla kapatıldığını belirtmek için döndürür this .

Geniş bir akış için, akış açıldıktan sonra veya son çağrısından streamposbu yana herhangi bir ekleme yapıldıysa, işlevi öğesini çağırır overflow. Ayrıca, gerektiğinde çağırmak fac.unshift için dosya dönüştürme modelini fac kullanarak ilk dönüştürme durumunu geri yüklemek için gereken tüm dizileri ekler. Türünde char üretilen her öğebyte, dosya işaretçisi fp tarafından formun fputc(byte, fp)ardışık çağrıları tarafından belirlenmiş ilişkili akışa yazılır. çağrısı fac.unshift veya herhangi bir yazma işlemi başarısız olursa işlev başarılı olmaz.

Örnek

Aşağıdaki örnekte geçerli dizinde iki dosya olduğu varsayılır: basic_filebuf_close.txt ("test") ve iotest.txt ("ssss" içeriğidir).

// 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

Kapsam içindeki basic_filebuf bu türü, kapsamdaki aynı adın türüne Tr eşdeğer hale getirir.

typedef typename traits_type::int_type int_type;

basic_filebuf::is_open

Bir dosyanın açık olup olmadığını gösterir.

bool is_open() const;

İade Değeri

true dosya işaretçisi null değilse.

Örnek

// 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

Kapsam içindeki basic_filebuf bu türü, kapsamdaki aynı adın türüne Tr eşdeğer hale getirir.

typedef typename traits_type::off_type off_type;

basic_filebuf::open

Bir dosya açar.

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);

Parametreler

filename
Açılacak dosyanın adı.

mod
içindeki ios_base::openmodesabit listelerinden biri.

Koruma
_fsopen'daki shflag parametresine eşdeğer varsayılan dosya açma koruması _wfsopen.

İade Değeri

Arabellek zaten açıksa veya dosya işaretçisi null bir işaretçiyse, işlev null bir işaretçi döndürür. Aksi takdirde döndürür this.

Açıklamalar

Bu işlev, çağrısı fopen/wfopen(filename, strmode)yapmışsınız gibi öğesini yedeklemek basic_filebuf için bir FILE * kullanır. strmodeşu kaynaktan mode & ~(binaryate|)belirlenir:

  • ios_base::in olur "r" (mevcut dosyayı okumak için açın).
  • ios_base::out veya ios_base::out | ios_base::trunc olur "w" (var olan dosyayı kes veya yazmak için oluştur).
  • ios_base::out | app olur "a" (tüm yazmaları eklemek için mevcut dosyayı açın).
  • ios_base::in | ios_base::out olur "r+" (okuma ve yazma için mevcut dosyayı açın).
  • ios_base::in | ios_base::out | ios_base::trunc olur "w+" (mevcut dosyayı kes veya okuma ve yazma için oluştur).
  • ios_base::in | ios_base::out | ios_base::app olur "a+" (var olan dosyayı okumak ve tüm yazmaları eklemek için açın).

Sıfır mode & ios_base::binary değilse, işlevi sonuna ekleyerek bstrmode metin akışı yerine ikili bir akış açar. Sıfır değilse ve dosya başarıyla açıldıysa mode & ios_base::ate , akıştaki geçerli konum dosyanın sonunda konumlandırılır. Bu başarısız olursa, dosya kapatılır.

Yukarıdaki işlemler başarıyla tamamlandıysa, dosya dönüştürme modelini, taşma ve taşma tarafından kullanmak üzere belirlenir:)> >(getlocuse_facet<codecvt<Char_T, char, traits_type::state_type .

Dosya başarıyla açılamıyorsa döndürülür nullptr .

Örnek

kullanan openbir örnek için bkzbasic_filebuf::close. .

basic_filebuf::operator=

Bu akış arabellek nesnesinin içeriğini atayın. Bu, arkasında bir kopya bırakmayan bir rvalue içeren taşıma atamasıdır.

basic_filebuf& operator=(basic_filebuf&& right);

Parametreler

Doğru
bir basic_filebuf nesnesine rvalue başvurusu.

İade Değeri

*this döndürür.

Açıklamalar

Üye işleci, nesnesinin içeriğini rvalue başvurusu olarak değerlendirilen içeriğini rightkullanarak değiştirir. Daha fazla bilgi için bkz . Rvalue başvuru bildirimcisi: &.

basic_filebuf::overflow

Tam arabelleğe yeni bir karakter eklendiğinde çağrılır.

virtual int_type overflow(int_type _Meta = traits_type::eof);

Parametreler

_Meta
Arabelleğe veya traits_type::eofiçine eklenecek karakter.

İade Değeri

İşlev başarılı olamazsa döndürür traits_type::eof. Aksi takdirde döndürür traits_type::not_eof(_Meta).

Açıklamalar

ise_Meta != traits_type::eof, korumalı sanal üye işlevi öğeyi(_Meta)ch = traits_type::to_char_typeçıkış arabelleğine eklemeyi dener. Bunu çeşitli yollarla yapabilir:

  • Bir yazma konumu varsa, öğeyi yazma konumuna depolayabilir ve çıkış arabelleği için sonraki işaretçiyi artırabilir.

  • Çıkış arabelleği için yeni veya ek depolama alanı ayırarak yazma konumunu kullanılabilir hale getirir.

  • Gerektiğinde çağırmak fac.out için dosya dönüştürme modelini fac kullanarak çıkış arabelleğindeki bekleyen çıktıları ve ardından chöğesini dönüştürebilir. char türünde üretilen her öğech, dosya işaretçisi fp tarafından formun fputc(ch, fp)ardışık çağrıları tarafından belirlenmiş ilişkili akışa yazılır. Herhangi bir dönüştürme veya yazma işlemi başarısız olursa işlev başarılı olmaz.

basic_filebuf::p backfail

Bir öğeyi giriş akışına geri yerleştirmeye çalışır, sonra bunu geçerli öğe yapar (sonraki işaretçinin işaret ettiği).

virtual int_type pbackfail(int_type _Meta = traits_type::eof);

Parametreler

_Meta
Arabelleğe eklenecek karakter veya traits_type::eof.

İade Değeri

İşlev başarılı olamazsa döndürür traits_type::eof. Aksi takdirde döndürür traits_type::not_eof(_Meta).

Açıklamalar

Korumalı sanal üye işlevi bir öğeyi giriş arabelleğine geri koyar ve ardından geçerli öğe yapar (sonraki işaretçi tarafından işaret edilir). ise _Meta == traits_type::eof, geri itme öğesi geçerli öğeden önceki akışta bulunan öğedir. Aksi takdirde, bu öğe ile ch = traits_type::to_char_type(_Meta)değiştirilir. işlevi bir öğeyi çeşitli yollarla geri koyabilir:

  • Bir putback konum varsa ve orada depolanan öğe ile eşitse ch, giriş arabelleği için sonraki işaretçiyi azaltabilir.

  • İşlev bir putback konumu kullanılabilir hale getirebiliyorsa, bunu yapabilir, sonraki işaretçiyi bu konuma işaret etmek için ayarlayabilir ve bu konumda depolayabilir ch .

  • İşlev bir öğeyi giriş akışına geri gönderebiliyorsa, örneğin türünde charbir öğe çağırarak ungetc bunu yapabilir.

basic_filebuf::p os_type

Kapsam içindeki basic_filebuf bu türü, kapsamdaki aynı adın türüne Tr eşdeğer hale getirir.

typedef typename traits_type::pos_type pos_type;

basic_filebuf::seekoff

Denetimli akışlar için geçerli konumları değiştirmeye çalışır.

virtual pos_type seekoff(
    off_type _Off,
    ios_base::seekdir _Way,
    ios_base::openmode _Which = ios_base::in | ios_base::out);

Parametreler

_Off
_Way göre aranacak konum.

_Yol
Uzaklık işlemleri için başlangıç noktası. Olası değerler için bkz . seekdir .

_Which
İşaretçi konumunun modunu belirtir. Varsayılan ayar, okuma ve yazma konumlarını değiştirmenize izin vermektir.

İade Değeri

Yeni konumu veya geçersiz bir akış konumunu döndürür.

Açıklamalar

Korumalı sanal üye işlevi, denetlenen akışlar için geçerli konumları değiştirmeyi dener. sınıfının basic_filebuf<Char_T, Tr>bir nesnesi için bir akış konumu, bir uzaklığı ve geniş bir akışı ayrıştırmak için gereken durum bilgilerini depolayan türünde fpos_tbir nesneyle temsil edilebilir. Sıfır uzaklığı, akışın ilk öğesine başvurur. (Türündeki pos_type bir nesne en az bir fpos_t nesne depolar.)

Hem okuma hem de yazma için açılan bir dosya için hem giriş hem de çıkış akışları birlikte konumlandırılır. Ekleme ve ayıklama arasında geçiş yapmak için veya pubseekposçağrısı pubseekoff yapmanız gerekir. çağrısı pubseekoff (ve dolayısıyla içinseekoff) metin akışları, ikili akışlar ve geniş akışlar için çeşitli sınırlamalara sahiptir.

Dosya işaretçisi fp null bir işaretçiyse işlev başarısız olur. Aksi takdirde çağırarak fseek(fp, _Off, _Way)akış konumunu değiştirmeyi dener. Bu işlev başarılı olursa ve sonuçta elde edilen konum fposn çağrılarak fgetpos(fp, &fposn)belirlenebilirse, işlev başarılı olur. İşlev başarılı olursa içeren türde pos_typefposnbir değer döndürür. Aksi takdirde geçersiz bir akış konumu döndürür.

basic_filebuf::seekpos

Denetimli akışlar için geçerli konumları değiştirmeye çalışır.

virtual pos_type seekpos(
    pos_type _Sp,
    ios_base::openmode _Which = ios_base::in | ios_base::out);

Parametreler

_Sp
Aranacak konum.

_Which
İşaretçi konumunun modunu belirtir. Varsayılan ayar, okuma ve yazma konumlarını değiştirmenize izin vermektir.

İade Değeri

Dosya işaretçisi fp null bir işaretçiyse işlev başarısız olur. Aksi takdirde, çağrısı fsetpos(fp, &fposn)yaparak akış konumunu değiştirmeyi dener; burada fposn içinde depolanan posnesnedirfpos_t. Bu işlev başarılı olursa işlevi döndürür pos. Aksi takdirde geçersiz bir akış konumu döndürür. Akış konumunun geçersiz olup olmadığını belirlemek için dönüş değerini ile pos_type(off_type(-1))karşılaştırın.

Açıklamalar

Korumalı sanal üye işlevi, denetlenen akışlar için geçerli konumları değiştirmeyi dener. sınıfının basic_filebuf<Char_T, Tr>bir nesnesi için bir akış konumu, bir uzaklığı ve geniş bir akışı ayrıştırmak için gereken durum bilgilerini depolayan türünde fpos_tbir nesneyle temsil edilebilir. Sıfır uzaklığı, akışın ilk öğesine başvurur. (Türündeki pos_type bir nesne en az bir fpos_t nesne depolar.)

Hem okuma hem de yazma için açılan bir dosya için hem giriş hem de çıkış akışları birlikte konumlandırılır. Ekleme ve ayıklama arasında geçiş yapmak için veya pubseekposçağrısı pubseekoff yapmanız gerekir. pubseekoff (ve içinseekoff) çağrılarının metin akışları, ikili akışlar ve geniş akışlar için çeşitli sınırlamaları vardır.

Geniş bir akış için, akış açıldıktan sonra veya son çağrısından streamposbu yana herhangi bir ekleme yapıldıysa, işlevi öğesini çağırır overflow. Ayrıca, gerektiğinde çağırmak fac.unshift için dosya dönüştürme modelini fac kullanarak ilk dönüştürme durumunu geri yüklemek için gereken tüm dizileri ekler. Türünde char üretilen her öğebyte, dosya işaretçisi fp tarafından formun fputc(byte, fp)ardışık çağrıları tarafından belirlenmiş ilişkili akışa yazılır. çağrısı fac.unshift veya herhangi bir yazma işlemi başarısız olursa işlev başarılı olmaz.

basic_filebuf::setbuf

Türetilen her akış arabelleğine özel bir işlem gerçekleştirir.

virtual basic_streambuf<Char_T, Tr> *setbuf(
    char_type* _Buffer,
    streamsize count);

Parametreler

_Arabellek
Arabelleğe işaretçi.

count
Arabelleğin boyutu.

İade Değeri

Korumalı üye işlevi, dosya işaretçisi fp null işaretçiyse sıfır döndürür.

Açıklamalar

setbuf_Buffer'da başlayan öğe dizisini count akış için bir arabellek olarak sunmaya yönelik çağrılarsetvbuf( fp, (char*) _Buffer, _IOFBF, count * sizeof( Char_T)). Bu işlev sıfır olmayan bir değer döndürürse, işlev null bir işaretçi döndürür. Aksi takdirde, başarı sinyaline döner this .

basic_filebuf::swap

Sağlanan basic_filebuföğesinin içeriği için bunun basic_filebuf içeriğini değiştirir.

void swap(basic_filebuf& right);

Parametreler

Doğru
Başka bir basic_filebuföğesine lvalue başvurusu.

basic_filebuf::sync

Denetlenen akışları ilişkili dış akışlarla eşitlemeye çalışır.

virtual int sync();

İade Değeri

Dosya işaretçisi fp null işaretçiyse sıfır döndürür. Aksi takdirde, yalnızca hem taşmaya çağrı yapılırsa hem fflush(fp) de bekleyen çıkışların akışa boşaltılması başarılı olursa sıfır döndürür.

basic_filebuf::traits_type

Bir tür adını şablon parametresiyle Tr ilişkilendirir.

typedef Tr traits_type;

basic_filebuf::underflow

Giriş akışından geçerli öğeyi ayıklar.

virtual int_type underflow();

İade Değeri

İşlev başarılı olamazsa döndürür traits_type::eof. Aksi takdirde, chdöndürür, Açıklamalar bölümünde açıklandığı gibi dönüştürülür.

Açıklamalar

Korumalı sanal üye işlevi, giriş akışından geçerli öğeyi ch ayıklamayı ve öğesini olarak traits_type::to_int_type(ch)döndürmeyi dener. Bunu çeşitli yollarla yapabilir:

  • Okuma konumu varsa, okuma konumunda depolanan öğe olarak alır ch ve giriş arabelleği için sonraki işaretçiyi ilerletir.

  • biçimindeki bir veya daha fazla öğeyichar, formun fgetc(fp)ardışık çağrıları gibi okuyabilir ve gerektiğinde çağırmak fac.in için dosya dönüştürme modelini fac kullanarak bunları türünde Char_T bir öğeye ch dönüştürebilir. Herhangi bir okuma veya dönüştürme başarısız olursa işlev başarılı olmaz.

Ayrıca bkz.

<fstream>
C++ Standart Kitaplığında İş Parçacığı Güvenliği
iostream Programlaması
iostreams Kuralları