Členské funkce datového proudu výstupního souboru
Výstupní proud členské funkce mají tři typy: ty, které jsou rovnocenné manipulators, takové, které provádějí neformátovaný zápis a ty, které jinak upravovat datový proud stát a mít odpovídající manipulator nebo operátor vkládání.Pro sekvenční, formátovaný výstup lze použít pouze operátory vkládání a manipulators.Pro binární disku RAM výstup pomocí jiných členských funkcí, s nebo bez vkládání operátorů.
Funkce open pro výstupní datové proudy
Chcete-li použít soubor výstupního datového proudu (ofstream), tento proud musí přidružit konkrétní diskového souboru v konstruktoru nebo otevřete funkce.Použijete-li otevřete funkce, lze znovu použít stejný objekt datového proudu pomocí řady souborů.V obou případech jsou argumenty popisující soubor stejné.
Při otevření souboru přidružen výstupní datový proud obvykle určují open_mode příznak.Můžete kombinovat tyto příznaky, které jsou definovány jako čítače v ios třídy s bitový operátor OR operátor (|).Viz ios_base::openmode seznam čítače výčtů.
Tří běžných situací výstupní proud zahrnují možnosti režimu:
Vytvoření souboru.Pokud soubor již existuje, je odstranit starou verzi.
ostream ofile( "FILENAME" ); // Default is ios::out ofstream ofile( "FILENAME", ios::out ); // Equivalent to above
Přidávání záznamů do existujícího souboru nebo vytvoření jedné, pokud neexistuje.
ofstream ofile( "FILENAME", ios::app );
Otevřít dva soubory, jeden po druhém, pro stejný datový proud.
ofstream ofile(); ofile.open( "FILE1", ios::in ); // Do some output ofile.close(); // FILE1 closed ofile.open( "FILE2", ios::in ); // Do some more output ofile.close(); // FILE2 closed // When ofile goes out of scope it is destroyed.
Funkce put
Put funkce jeden znak zapíše do výstupního proudu.Následující dva příkazy jsou stejné ve výchozím nastavení, ale druhá je ovlivněna argumenty formátu datového proudu:
cout.put( 'A' ); // Exactly one character written
cout << 'A'; // Format arguments 'width' and 'fill' apply
Zápis funkce
Psát funkce blok paměti zapíše do výstupního souboru datového proudu.Délka argumentu určuje počet zapsaných bajtů.Tento příklad vytvoří výstupního datového proudu souboru a zapíše binární hodnotu Date struktury na něj:
// write_function.cpp
// compile with: /EHsc
#include <fstream>
using namespace std;
struct Date
{
int mo, da, yr;
};
int main( )
{
Date dt = { 6, 10, 92 };
ofstream tfile( "date.dat" , ios::binary );
tfile.write( (char *) &dt, sizeof dt );
}
Psát funkce nezastaví dosáhne prázdný znak, tak kompletní třída struktura je zapsán.Funkce přebírá dva argumenty: char ukazatele a počet znaků, které chcete psát.Poznámka: požadované přetypování na char * před adresu strukturu objektu.
Funkce seekp a tellp
Výstupního souboru datového proudu udržuje vnitřní ukazatel, který ukazuje na místo, kde má zapisovat další data.seekp Členské funkce nastaví tento ukazatel a tak poskytuje výstupní soubor-RAM disk.tellp Členské funkce vrátí umístění souboru.Příklady, které používat ekvivalenty vstupního datového proudu k seekp a tellp, viz funkce seekg a tellg.
Funkci close pro výstupní datové proudy
Zavřete členské funkce zavře soubor disk přidružený soubor výstupní datový proud.Soubor je nutné zavřít dokončete všechny výstupy disku.V případě potřeby ofstream destruktor zavře soubor pro vás, ale můžete použít zavřete fungovat, pokud chcete otevřít další soubor pro stejný objekt datového proudu.
Destruktor výstupní proud automaticky zavře datový proud souboru pouze tehdy, pokud konstruktor nebo otevřete členskou funkci Otevřít.Pokud předat konstruktoru popisovač souboru pro soubor již otevřít nebo použít Připojit členské funkce, je třeba výslovně zavřít.
Funkce zpracování chyb
Testování chyb při zápisu do datového proudu pomocí těchto členských funkcí:
Funkce |
Návratová hodnota |
---|---|
Vrátí true dojde k neodstranitelné chybě. |
|
Vrátí true v případě neodstranitelné chyby nebo "Očekávaná" podmínky, například k chybě převodu nebo pokud soubor nebyl nalezen.Zpracování mohou často pokračovat po volání zrušte zaškrtnutí s argumentem nula. |
|
Vrátí true Pokud není žádný chybový stav (neopravitelné nebo jinak), a není nastaven příznak konce souboru. |
|
Vrátí true na stav konce souboru. |
|
Nastaví stav došlo k vnitřní chybě.Pokud je volána s výchozí parametry, vymaže všechny chybné bity. |
|
Vrátí aktuální chybový stav. |
The ! operátor přetížený vykonávat stejnou funkci jako selhání funkce.Proto výraz:
if( !cout)...
je ekvivalentní:
if( cout.fail() )...
Void*() být opakem je přetížený operátor ! provozovatele; proto výraz:
if( cout)...
se rovná:
if( !cout.fail() )...
Void*() operátor není ekvivalentní Dobrý vzhledem k tomu, že netestuje pro konec souboru.