Sdílet prostřednictvím


Výstup funkce členů souboru datového proudu

Výstupní proud členské funkce mají tři typy: ty, které jsou rovnocenné manipulators, takové, které provádějí neformátovaný operace zápisu a ty, které jinak upravovat datový proud státu a mít rovnocenné manipulator ani vkládání operátor.Pro sekvenční, formátovaný výstup lze použít pouze operátory kurzoru a manipulators.Pro binární disku RAM výstup pomocí jiných funkcí členů s nebo bez vkládání operátorů.

Funkce otevřít pro výstupní datové proudy

Použití souboru výstupního datového proudu (ofstream), tento proud musíte spojit s konkrétní diskového souboru v konstruktoru nebo otevřete funkce.Používáte-li otevřete funkci, můžete znovu použít stejný objekt stream s řady souborů.V obou případech jsou argumenty popisující soubor stejné.

Při otevření souboru přidružen výstupního proudu je obecně určit open_mode příznak.Můžete zkombinovat tyto příznaky, které jsou definovány jako výčtu v ios třídy s bitový operátor OR operátor (|).Viz ios_base::openmode seznam čítače výčtů.

Tři běžných situací výstupní proud zahrnují možnosti režimu:

  • Vytvoření souboru.Pokud soubor již existuje, je odstraněna stará verze.

    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 jedno vytvoření, pokud neexistuje.

    ofstream ofile( "FILENAME", ios::app );
    
  • Otevřít dva soubory, jeden po druhém, na 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 zapíše do výstupního proudu jeden znak.Následující dva příkazy jsou stejné jako výchozí, 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

Psaní funkce blok paměti zapíše do souboru výstupní datový proud.Délka argumentu určuje počet zapsaných bajtů.Tento příklad vytvoří výstup souboru datového proudu 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 );
}

Psaní funkce nezastaví, když dosáhne znakem null, tak třídy kompletní struktury je zapsán.Funkce přijímá dva argumenty: char ukazatele a počet znaků pro zápis.Poznámka: požadované osazení na char * před adresu struktury objektu.

Funkce seekp a tellp

Soubor výstupní datový proud udržuje vnitřní ukazatel, který odkazuje na umístění, kde se zapsat další data.seekp Členské funkce nastaví tento ukazatel a umožňuje výstupního souboru náhodný přístup k disku.tellp Členské funkce vrátí pozici souboru.Příklady, používající ekvivalenty vstupní proud na seekp a tellp, viz funkce seekg a tellg.

Funkce Zavřít pro výstupní datové proudy

Zavřít členské funkce zavře disku soubor přidružený soubor výstupní datový proud.Soubor musí být uzavřena na dokončení všech výstup disku.V případě potřeby ofstream destructor můžete soubor zavře, ale můžete použít Zavřít fungovat, pokud chcete otevřít další soubor pro stejný objekt datového proudu.

Destructor výstupní proud automaticky zavře pouze tehdy, jestliže soubor datový proud konstruktor nebo otevřete členské funkce otevření souboru.Pokud předat konstruktoru popisovač souboru již otevřít soubor či použití Připojit členské funkce je třeba výslovně zavřít.

Chyba při zpracování funkce

Pomocí těchto funkcí členů testování chyb při zápisu do proudu:

Function

Vrácená hodnota

Chybný

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

selhání

Vrátí true Pokud je neopravitelná chyba nebo "Očekávaná" podmínky, jako například převod chyba, nebo pokud soubor nebyl nalezen.Zpracování může často pokračovat po volání zrušte s nulovou argument.

Dobrý

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

EOF

Vrátí true na podmínku konce souboru.

Vymazat

Nastaví stav vnitřní chyba.Pokud je volána s výchozí argumenty, vymaže všechny bity chyba.

rdstate

Vrátí aktuální stav chyby.

The ! operátor je přetížena provést stejnou funkci jako selhání funkce.Proto výraz:

if( !cout)...

je ekvivalentní:

if( cout.fail() )...

Void*() operátor je přetížena je opakem ! operátor; proto výraz:

if( cout)...

je rovno:

if( !cout.fail() )...

Void*() operátor není ekvivalentní dobré protože není test na konec souboru.

Viz také

Referenční dokumentace

Výstupní datové proudy