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 |
---|---|
Vrátí true dojde k neodstranitelné chybě. |
|
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. |
|
Vrátí true Pokud není žádný chybový stav (neopravitelné nebo jinak), a není nastaven příznak konce souboru. |
|
Vrátí true na podmínku konce souboru. |
|
Nastaví stav vnitřní chyba.Pokud je volána s výchozí argumenty, vymaže všechny bity chyba. |
|
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.