basic_filebuf — Klasa
Opisuje bufor strumienia, który kontroluje transmisję elementów typu Char_T, których cechy znaków są określane przez klasę Tr, do i z sekwencji elementów przechowywanych w pliku zewnętrznym.
Składnia
template <class Char_T, class Tr = char_traits<Char_T>>
class basic_filebuf : public basic_streambuf<Char_T, Tr>
Parametry
Char_T
Podstawowy element buforu plików.
Tr
Cechy podstawowego elementu buforu plików (zwykle char_traits<Char_T>
).
Uwagi
Szablon klasy opisuje bufor strumienia, który kontroluje transmisję elementów typu Char_T, których cechy znaków są określane przez klasę Tr do i z sekwencji elementów przechowywanych w pliku zewnętrznym.
Uwaga
Obiekty typu basic_filebuf
są tworzone z wewnętrznym buforem typu char* niezależnie od char_type
określonego przez parametr typu Char_T. Oznacza to, że ciąg Unicode (zawierający wchar_t
znaki) zostanie przekonwertowany na ciąg ANSI (zawierający char
znaki), zanim zostanie zapisany w buforze wewnętrznym. Aby przechowywać ciągi Unicode w buforze, utwórz nowy bufor typu wchar_t
i ustaw go przy użyciu basic_streambuf::pubsetbuf
()
metody . Aby zobaczyć przykład, który demonstruje to zachowanie, zobacz poniżej.
Obiekt klasy basic_filebuf<Char_T, Tr>
przechowuje wskaźnik pliku, który wyznacza FILE
obiekt, który kontroluje strumień skojarzony z otwartym plikiem. Przechowuje również wskaźniki do dwóch aspektów konwersji plików do użycia przez chronione funkcje składowe przepełnienie i podpełnienie. Aby uzyskać więcej informacji, zobacz basic_filebuf::open
.
Przykład
W poniższym przykładzie pokazano, jak wymusić, aby obiekt typu basic_filebuf<wchar_t>
przechowywał znaki Unicode w swoim buforze wewnętrznym przez wywołanie pubsetbuf()
metody .
// 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...........
Konstruktory
Konstruktor | opis |
---|---|
basic_filebuf | Tworzy obiekt typu basic_filebuf . |
Typedefs
Nazwa typu | opis |
---|---|
char_type | Kojarzy nazwę typu z parametrem szablonu Char_T . |
int_type | Określa, że ten typ w basic_filebuf zakresie jest odpowiednikiem typu tej samej nazwy w Tr zakresie. |
off_type | Określa, że ten typ w basic_filebuf zakresie jest odpowiednikiem typu tej samej nazwy w Tr zakresie. |
pos_type | Określa, że ten typ w basic_filebuf zakresie jest odpowiednikiem typu tej samej nazwy w Tr zakresie. |
traits_type | Kojarzy nazwę typu z parametrem szablonu Tr . |
Funkcje składowe
Funkcja składowa | opis |
---|---|
close | Zamyka plik. |
is_open | Wskazuje, czy plik jest otwarty. |
open | Otwiera plik. |
przepełnienie | Chroniona funkcja wirtualna, którą można wywołać, gdy nowy znak zostanie wstawiony do pełnego buforu. |
pbackfail | Chroniona funkcja wirtualnego elementu członkowskiego próbuje przywrócić element do strumienia wejściowego, a następnie ustawić go jako bieżący element (wskazywany przez następny wskaźnik). |
seekoff | Chroniona funkcja wirtualnego elementu członkowskiego próbuje zmienić bieżące pozycje dla kontrolowanych strumieni. |
seekpos | Chroniona funkcja wirtualnego elementu członkowskiego próbuje zmienić bieżące pozycje dla kontrolowanych strumieni. |
setbuf | Chroniona funkcja wirtualnego elementu członkowskiego wykonuje operację określoną dla każdego buforu strumienia pochodnego. |
Zamiana | Wymienia zawartość tego basic_filebuf parametru dla zawartości podanego basic_filebuf parametru. |
synchronizować | Chroniona funkcja wirtualna próbuje zsynchronizować kontrolowane strumienie z dowolnymi skojarzonymi strumieniami zewnętrznymi. |
przepływ uflow | Chroniona funkcja wirtualna w celu wyodrębnienia bieżącego elementu ze strumienia wejściowego. |
Niedomiar | Chroniona funkcja wirtualna w celu wyodrębnienia bieżącego elementu ze strumienia wejściowego. |
Wymagania
Nagłówek:<fstream>
Przestrzeń nazw: std
basic_filebuf::basic_filebuf
Tworzy obiekt typu basic_filebuf
.
basic_filebuf();
basic_filebuf(basic_filebuf&& right);
Uwagi
Pierwszy konstruktor przechowuje wskaźnik o wartości null we wszystkich wskaźnikach kontrolujących bufor wejściowy i bufor wyjściowy. Przechowuje również wskaźnik o wartości null w wskaźniku pliku.
Drugi konstruktor inicjuje obiekt z zawartością right
elementu , traktowany jako odwołanie rvalue.
basic_filebuf::char_type
Kojarzy nazwę typu z parametrem szablonu Char_T
.
typedef Char_T char_type;
basic_filebuf::close
Zamyka plik.
basic_filebuf<Char_T, Tr> *close();
Wartość zwracana
Funkcja składowa zwraca wskaźnik o wartości null, jeśli wskaźnik pliku jest wskaźnikiem o wartości null.
Uwagi
close
wywołuje metodę fclose(fp)
. Jeśli ta funkcja zwraca wartość niezerową, funkcja zwraca wskaźnik o wartości null. W przeciwnym razie zwraca this
wartość , aby wskazać, że plik został pomyślnie zamknięty.
W przypadku szerokiego strumienia, jeśli wystąpiły jakiekolwiek wstawienia od momentu otwarcia strumienia lub od ostatniego wywołania metody streampos
, funkcja wywołuje metodę overflow
. Wstawia również dowolną sekwencję wymaganą do przywrócenia stanu konwersji początkowej przy użyciu aspektu fac
konwersji pliku do wywołania fac.unshift
zgodnie z potrzebami. Każdy wygenerowany element byte
typu char
jest zapisywany do skojarzonego strumienia wyznaczonego przez wskaźnik fp
pliku tak, jakby przez kolejne wywołania formularza fputc(byte, fp)
. Jeśli wywołanie metody fac.unshift
lub zapisu zakończy się niepowodzeniem, funkcja nie powiedzie się.
Przykład
W poniższym przykładzie przyjęto założenie, że dwa pliki w bieżącym katalogu: basic_filebuf_close.txt (zawartość to "testowanie") i iotest.txt (zawartość to "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
Określa ten typ w basic_filebuf
zakresie odpowiadający typowi tej samej nazwy w Tr
zakresie.
typedef typename traits_type::int_type int_type;
basic_filebuf::is_open
Wskazuje, czy plik jest otwarty.
bool is_open() const;
Wartość zwracana
true
jeśli wskaźnik pliku nie ma wartości null.
Przykład
// 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
Określa ten typ w basic_filebuf
zakresie odpowiadający typowi tej samej nazwy w Tr
zakresie.
typedef typename traits_type::off_type off_type;
basic_filebuf::open
Otwiera plik.
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);
Parametry
filename
Nazwa pliku do otwarcia.
tryb
Jeden z wyliczeń w pliku ios_base::openmode
.
ochrona
Domyślna ochrona otwierania pliku równoważna parametrowi shflag w _fsopen _wfsopen.
Wartość zwracana
Jeśli bufor jest już otwarty lub wskaźnik pliku jest wskaźnikiem o wartości null, funkcja zwraca wskaźnik o wartości null. W przeciwnym razie zwraca wartość this
.
Uwagi
Ta funkcja używa elementu , FILE *
aby wykonać kopię zapasową elementu basic_filebuf
, tak jakby wywołaliśmy fopen/wfopen
(filename, strmode)
funkcję . strmode
jest określany na podstawie mode & ~(
binary
ate
|
)
elementu :
ios_base::in
staje się (otwórz istniejący"r"
plik do odczytu).- ios_base::out lub
ios_base::out | ios_base::trunc
staje się"w"
(obcinaj istniejący plik lub utwórz do zapisu). ios_base::out | app
staje się (otwórz istniejący"a"
plik do dołączania wszystkich zapisów).ios_base::in | ios_base::out
staje się (otwórz istniejący"r+"
plik do odczytu i zapisu).ios_base::in | ios_base::out | ios_base::trunc
staje się (obcinaj istniejący"w+"
plik lub utwórz do odczytu i zapisu).ios_base::in | ios_base::out | ios_base::app
staje się (otwórz istniejący"a+"
plik do odczytu i dołączania wszystkich zapisów).
Jeśli mode & ios_base::binary
jest nonzero, funkcja dołącza b
do strmode
otwierania strumienia binarnego zamiast strumienia tekstowego.
Jeśli mode & ios_base::ate
plik jest niezerowy i plik został pomyślnie otwarty, bieżąca lokalizacja w strumieniu jest umieszczona na końcu pliku. Jeśli to się nie powiedzie, plik zostanie zamknięty.
Jeśli powyższe operacje zostały ukończone pomyślnie, zostanie określony aspekt konwersji plików: use_facet<codecvt<Char_T, char, traits_type::
state_type
)
> >(
getloc
, do użycia przez niedopełnienie i przepełnienie.
Jeśli nie można pomyślnie otworzyć pliku, nullptr
zostanie zwrócony.
Przykład
Zobacz basic_filebuf::close
przykład, który używa elementu open
.
basic_filebuf::operator=
Przypisz zawartość tego obiektu buforu strumienia. Jest to przypisanie przenoszenia obejmujące rvalue, które nie pozostawia kopii.
basic_filebuf& operator=(basic_filebuf&& right);
Parametry
Prawy
Odwołanie rvalue do obiektu basic_filebuf .
Wartość zwracana
Zwraca wartość *this
.
Uwagi
Operator elementu członkowskiego zastępuje zawartość obiektu przy użyciu zawartości right
elementu , traktowanej jako odwołanie rvalue. Aby uzyskać więcej informacji, zobacz Deklarator odwołań Rvalue: &&.
basic_filebuf::overflow
Wywoływana, gdy nowy znak jest wstawiany do pełnego buforu.
virtual int_type overflow(int_type _Meta = traits_type::eof);
Parametry
_Meta
Znak do wstawienia do buforu lub traits_type::eof
.
Wartość zwracana
Jeśli funkcja nie może zakończyć się powodzeniem, zwraca wartość traits_type::eof
. W przeciwnym razie zwraca wartość traits_type::
not_eof
(_Meta)
.
Uwagi
Jeśli _Meta != traits_type::
eof
funkcja chronionego wirtualnego elementu członkowskiego próbuje wstawić element(_Meta)
ch = traits_type::
to_char_type
do buforu wyjściowego. Może to zrobić na różne sposoby:
Jeśli pozycja zapisu jest dostępna, może przechowywać element w pozycji zapisu i zwiększać następny wskaźnik dla buforu wyjściowego.
Może ona udostępnić pozycję zapisu, przydzielając nowy lub dodatkowy magazyn dla buforu wyjściowego.
Może przekonwertować wszystkie oczekujące dane wyjściowe w buforze wyjściowym, a następnie
ch
, używając aspektufac
konwersji plików do wywołaniafac.out
zgodnie z potrzebami. Każdy wygenerowany elementch
typu char jest zapisywany do skojarzonego strumienia wyznaczonego przez wskaźnikfp
pliku tak, jakby przez kolejne wywołania formularzafputc(ch, fp)
. Jeśli jakakolwiek konwersja lub zapis nie powiedzie się, funkcja nie powiedzie się.
basic_filebuf::p backfail
Próbuje przywrócić element do strumienia wejściowego, a następnie ustawić go jako bieżący element (wskazywany przez następny wskaźnik).
virtual int_type pbackfail(int_type _Meta = traits_type::eof);
Parametry
_Meta
Znak do wstawienia do buforu lub traits_type::eof
.
Wartość zwracana
Jeśli funkcja nie może zakończyć się powodzeniem, zwraca wartość traits_type::eof
. W przeciwnym razie zwraca wartość traits_type::
not_eof
(_Meta)
.
Uwagi
Chroniona funkcja wirtualnego elementu członkowskiego umieszcza element w buforze wejściowym, a następnie sprawia, że jest to bieżący element (wskazywany przez następny wskaźnik). Jeśli _Meta == traits_type::
eof
element , który należy odepchnąć, jest skutecznie elementem, który znajduje się już w strumieniu przed bieżącym elementem. W przeciwnym razie ten element jest zastępowany przez ch = traits_type::
to_char_type
(_Meta)
element . Funkcja może umieścić element na różne sposoby:
Jeśli pozycja jest dostępna, a przechowywany tam element porównuje wartość równą
putback
ch
, może on odkreślić następny wskaźnik dla buforu wejściowego.Jeśli funkcja może udostępnić
putback
pozycję, może to zrobić, ustawić następny wskaźnik, aby wskazać tę pozycję i zapisaćch
w tej pozycji.Jeśli funkcja może odepchnąć element do strumienia wejściowego, może to zrobić, na przykład wywołując
ungetc
element typuchar
.
basic_filebuf::p os_type
Określa ten typ w basic_filebuf
zakresie odpowiadający typowi tej samej nazwy w Tr
zakresie.
typedef typename traits_type::pos_type pos_type;
basic_filebuf::seekoff
Próbuje zmienić bieżące pozycje dla kontrolowanych strumieni.
virtual pos_type seekoff(
off_type _Off,
ios_base::seekdir _Way,
ios_base::openmode _Which = ios_base::in | ios_base::out);
Parametry
_Od
Stanowisko do poszukiwania względem _Way.
_Droga
Punkt początkowy operacji przesunięcia. Zobacz wyszukiwanie możliwych wartości.
_Który
Określa tryb położenia wskaźnika. Ustawieniem domyślnym jest umożliwienie modyfikowania pozycji odczytu i zapisu.
Wartość zwracana
Zwraca nową pozycję lub nieprawidłową pozycję strumienia.
Uwagi
Chroniona funkcja wirtualna elementu członkowskiego próbuje zmienić bieżące pozycje dla kontrolowanych strumieni. W przypadku obiektu klasy basic_filebuf
<Char_T, Tr>
pozycja strumienia może być reprezentowana przez obiekt typu fpos_t
, który przechowuje przesunięcie i wszelkie informacje o stanie potrzebne do analizowania szerokiego strumienia. Przesunięcie zero odnosi się do pierwszego elementu strumienia. (Obiekt typu pos_type
przechowuje co najmniej fpos_t
obiekt).
W przypadku pliku otwartego zarówno do odczytu, jak i zapisu, zarówno strumieni wejściowych, jak i wyjściowych są rozmieszczone razem. Aby przełączać się między wstawianiem i wyodrębnianiem, należy wywołać metodę pubseekoff
lub pubseekpos
. Wywołania do pubseekoff
(a tym samym seekoff
) mają różne ograniczenia dotyczące strumieni tekstowych, strumieni binarnych i szerokich strumieni.
Jeśli wskaźnik fp
pliku jest wskaźnikiem o wartości null, funkcja kończy się niepowodzeniem. W przeciwnym razie próbuje zmienić położenie strumienia, wywołując metodę fseek(fp, _Off, _Way)
. Jeśli ta funkcja powiedzie się, a wynikowa pozycja fposn
może zostać określona przez wywołanie fgetpos(fp, &fposn)
funkcji , funkcja zakończy się powodzeniem. Jeśli funkcja powiedzie się, zwraca wartość typu pos_type
zawierającego fposn
wartość . W przeciwnym razie zwraca nieprawidłową pozycję strumienia.
basic_filebuf::seekpos
Próbuje zmienić bieżące pozycje dla kontrolowanych strumieni.
virtual pos_type seekpos(
pos_type _Sp,
ios_base::openmode _Which = ios_base::in | ios_base::out);
Parametry
_Sp
Stanowisko do poszukiwania.
_Który
Określa tryb położenia wskaźnika. Ustawieniem domyślnym jest umożliwienie modyfikowania pozycji odczytu i zapisu.
Wartość zwracana
Jeśli wskaźnik fp
pliku jest wskaźnikiem o wartości null, funkcja kończy się niepowodzeniem. W przeciwnym razie próbuje zmienić położenie strumienia przez wywołanie fsetpos(fp, &fposn)
metody , gdzie fposn
jest obiektem przechowywanym fpos_t
w pos
obiekcie . Jeśli ta funkcja powiedzie się, funkcja zwróci pos
wartość . W przeciwnym razie zwraca nieprawidłową pozycję strumienia. Aby określić, czy pozycja strumienia jest nieprawidłowa, porównaj wartość zwracaną z pos_type(off_type(-1))
.
Uwagi
Chroniona funkcja wirtualna elementu członkowskiego próbuje zmienić bieżące pozycje dla kontrolowanych strumieni. W przypadku obiektu klasy basic_filebuf
<Char_T, Tr>
pozycja strumienia może być reprezentowana przez obiekt typu fpos_t
, który przechowuje przesunięcie i wszelkie informacje o stanie potrzebne do analizowania szerokiego strumienia. Przesunięcie zero odnosi się do pierwszego elementu strumienia. (Obiekt typu pos_type
przechowuje co najmniej fpos_t
obiekt).
W przypadku pliku otwartego zarówno do odczytu, jak i zapisu, zarówno strumieni wejściowych, jak i wyjściowych są rozmieszczone razem. Aby przełączać się między wstawianiem i wyodrębnianiem, należy wywołać metodę pubseekoff
lub pubseekpos
. Wywołania do pubseekoff
(i ) seekoff
mają różne ograniczenia dotyczące strumieni tekstowych, strumieni binarnych i szerokich strumieni.
W przypadku szerokiego strumienia, jeśli wystąpiły jakiekolwiek wstawienia od momentu otwarcia strumienia lub od ostatniego wywołania metody streampos
, funkcja wywołuje metodę overflow
. Wstawia również dowolną sekwencję wymaganą do przywrócenia stanu konwersji początkowej przy użyciu aspektu fac
konwersji pliku do wywołania fac.unshift
zgodnie z potrzebami. Każdy wygenerowany element byte
typu char
jest zapisywany do skojarzonego strumienia wyznaczonego przez wskaźnik fp
pliku tak, jakby przez kolejne wywołania formularza fputc(byte, fp)
. Jeśli wywołanie metody fac.unshift
lub zapisu zakończy się niepowodzeniem, funkcja nie powiedzie się.
basic_filebuf::setbuf
Wykonuje operację konkretną dla każdego buforu strumienia pochodnego.
virtual basic_streambuf<Char_T, Tr> *setbuf(
char_type* _Buffer,
streamsize count);
Parametry
_Bufor
Wskaźnik do buforu.
count
Rozmiar buforu.
Wartość zwracana
Funkcja chronionego elementu członkowskiego zwraca zero, jeśli wskaźnik fp
pliku jest wskaźnikiem o wartości null.
Uwagi
setbuf
wywołania setvbuf( fp, (char*) _Buffer, _IOFBF, count * sizeof( Char_T))
w celu zaoferowania tablicy elementów rozpoczynających count
się od _Buffer jako buforu dla strumienia. Jeśli ta funkcja zwraca wartość niezerową, funkcja zwraca wskaźnik o wartości null. W przeciwnym razie zwraca this
sygnał powodzenia.
basic_filebuf::swap
Wymienia zawartość tego basic_filebuf
elementu pod kątem zawartości podanego basic_filebuf
elementu .
void swap(basic_filebuf& right);
Parametry
Prawy
Odwołanie lvalue do innego basic_filebuf
elementu .
basic_filebuf::sync
Próbuje zsynchronizować kontrolowane strumienie z dowolnymi skojarzonymi strumieniami zewnętrznymi.
virtual int sync();
Wartość zwracana
Zwraca zero, jeśli wskaźnik fp
pliku jest wskaźnikiem o wartości null. W przeciwnym razie zwraca zero tylko wtedy, gdy wywołania zarówno przepełnienia , jak i fflush(fp)
pomyślne opróżnienia wszystkich oczekujących danych wyjściowych do strumienia.
basic_filebuf::traits_type
Kojarzy nazwę typu z parametrem szablonu Tr
.
typedef Tr traits_type;
basic_filebuf::underflow
Wyodrębnia bieżący element ze strumienia wejściowego.
virtual int_type underflow();
Wartość zwracana
Jeśli funkcja nie może zakończyć się powodzeniem, zwraca wartość traits_type::
eof
. W przeciwnym razie zwraca ch
wartość , przekonwertowaną zgodnie z opisem w sekcji Uwagi.
Uwagi
Chroniona funkcja wirtualnego elementu członkowskiego próbuje wyodrębnić bieżący element ch
ze strumienia wejściowego i zwrócić element jakoto_int_type
traits_type::
(ch)
. Może to zrobić na różne sposoby:
Jeśli pozycja odczytu jest dostępna, przyjmuje
ch
jako element przechowywany w pozycji odczytu i przechodzi następny wskaźnik dla buforu wejściowego.Może odczytywać jeden lub więcej elementów typu
char
, tak jak przez kolejne wywołania formularzafgetc(fp)
i przekonwertować je na elementch
typuChar_T
przy użyciu aspektufac
konwersji pliku do wywołaniafac.in
zgodnie z potrzebami. Jeśli jakikolwiek odczyt lub konwersja nie powiedzie się, funkcja nie powiedzie się.
Zobacz też
<fstream>
Bezpieczeństwo wątku w standardowej bibliotece C++
iostream, programowanie
Konwencje iostream