Sdílet prostřednictvím


Č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

Chybný

Vrátí true dojde k neodstranitelné chybě.

selhání

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.

dobré

Vrátí true Pokud není žádný chybový stav (neopravitelné nebo jinak), a není nastaven příznak konce souboru.

EOF

Vrátí true na stav konce souboru.

vymazat

Nastaví stav došlo k vnitřní chybě.Pokud je volána s výchozí parametry, vymaže všechny chybné bity.

rdstate

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.

Viz také

Referenční dokumentace

Výstupní datové proudy