file input output operations c
Een onderzoek naar bewerkingen voor bestandsinvoer en uitvoer van bestanden in C ++.
Bij realtime programmeren hebben we te maken met grote hoeveelheden gegevens die niet kunnen worden ondergebracht vanaf standaard Input-Output-apparaten. Daarom moeten we gebruik maken van secundaire opslag voor het opslaan van gegevens. Met behulp van secundaire opslag slaan we gegevens meestal op in de vorm van bestanden.
We kunnen gegevens uit bestanden lezen of gegevens naar bestanden schrijven door een reeks gegevens te gebruiken die streams worden genoemd, in tekst- of binaire indeling. Er zijn verschillende invoer / uitvoer en andere bewerkingen gerelateerd aan bestanden in C ++. Deze tutorial legt deze bewerkingen uit die verband houden met bestanden die verschillende klassen gebruiken.
Bezoek hier voor de exclusieve C ++ Training Tutorial Series.
Wat je leert:
Bestandsinvoer / uitvoerklassen in C ++
We hebben een iostream-klasse gezien in C ++ die de standaard invoer- en uitvoerfunctionaliteit definieert, inclusief cin en cout. Deze klasse is beperkt tot de standaard invoer- en uitvoerapparaten, zoals respectievelijk toetsenbord en monitor.
Als het gaat om bestandsbewerkingen, heeft C ++ een andere set klassen die kunnen worden gebruikt.
Deze klassen worden hieronder beschreven:
- Ofstream: Bestandsafhandelingsklasse die de uitvoerbestandsstroom aangeeft en wordt gebruikt voor het schrijven van gegevens naar bestanden.
- Ifstream: Bestandsverwerkingsklasse die de invoerbestandsstroom aangeeft en wordt gebruikt voor het lezen van gegevens uit het bestand.
- Fstream: Bestandsverwerkingsklasse die zowel ifstream als ofstream kan verwerken. Het kan worden gebruikt om uit een bestand te lezen en ernaar te schrijven.
De volgende bewerkingen worden ondersteund in C ++ File Handling:
- Een bestand openen
- Sluit een bestand
- Lees uit een bestand
- Schrijf naar een bestand
Laten we elk van deze bewerkingen in detail bekijken !!
Een bestand openen
Het koppelen van een object van een van de stroomklassen aan een bestand om te lezen of te schrijven of beide wordt het openen van een bestand genoemd. Een geopend bestand wordt in code weergegeven door dit stream-object te gebruiken. Dus elke lees- / schrijfbewerking die op dit stream-object wordt uitgevoerd, wordt ook op het fysieke bestand toegepast.
De algemene syntaxis om een bestand met de stream te openen is:
Hier,
filename => De string met het pad en de naam van het te openen bestand.
mode => Optionele parameter die de modus aangeeft waarin het bestand moet worden geopend.
C ++ ondersteunt verschillende modi waarin het bestand kan worden geopend. We kunnen ook een combinatie van deze modi specificeren met behulp van de OR-operator.
websites om anime engels nagesynchroniseerd te bekijken
Bestandsmodus | Omschrijving |
---|---|
ios :: in | Opent het bestand in invoermodus om het te lezen. |
ios :: uit | Opent het bestand in uitvoermodus om gegevens naar een bestand te schrijven. |
ios :: at | Stel de beginpositie in aan het einde van het bestand. Als de vlag voor het einde van het bestand niet is ingesteld, wordt de beginpositie ingesteld op het begin van het bestand. |
ios :: trunc | Als het bestand is geopend om te schrijven en al inhoud heeft, wordt de inhoud afgekapt. |
ios :: app | Opent het bestand in de toevoegmodus zodat alle inhoud aan het einde van het bestand wordt toegevoegd. |
ios :: binair | Opent bestand in binaire modus. |
Bijvoorbeeld,als we een bestand 'myfile.dat' willen openen om gegevens in binaire modus toe te voegen, dan kunnen we de volgende code schrijven.
Zoals eerder vermeld, is de parameter mode optioneel. Wanneer we een bestand openen zonder de tweede parameter op te geven, heeft een open lidfunctie van ofstream, ifstream of fstream een standaardmodus om het bestand mee te openen.
Deze worden als volgt weergegeven:
Klasse | Standaard modus |
---|---|
Ifstream | ios :: in |
ofstream | ios :: uit |
Fstream | ios :: in | ios :: uit |
Dus als we de tweede parameter niet specificeren in de open functie, wordt het bestand geopend met de standaardmodus, afhankelijk van de gebruikte streamklasse.
Een bestand sluiten
We kunnen de close-functie gebruiken om een bestand te sluiten en de bronnen van het bestand vrij te geven als we klaar zijn met de invoer- en uitvoerbewerkingen op een bestand.
Functie om een bestand te sluiten is:
Dus als we klaar zijn met de bewerkingen in het bovenstaande bestand myfile, kunnen we het bestand als volgt sluiten:
Als het bestand eenmaal is gesloten met de sluitfunctie, kan het bijbehorende bestandsobject opnieuw worden gebruikt om een ander bestand te openen.
Lezen uit een bestand
We kunnen de informatie van een bestand regel voor regel lezen met behulp van de stream extractie-operator (>>). Dit is vergelijkbaar met het lezen van invoer van de standaardinvoer met cin. Het enige verschil is dat we in het geval van bestanden ifstream of fstream object gebruiken in plaats van cin.
Voorbeeldcode voor het lezen van een bestand wordt hieronder gegeven:
In de bovenstaande code openen we een bestand en met behulp van de stream extractie-operator (>>) lezen we de inhoud van het bestand. Als we klaar zijn met lezen, kunnen we het bestand sluiten.
Schrijven naar een bestand
We kunnen ook gegevens naar een bestand schrijven met behulp van de bestandsbewerkingen. De operator die we gebruiken om gegevens naar een bestand te schrijven, is een operator voor het invoegen van streams (<<). Once again this is the same operator that we use to print data to a standard output device using cout. Difference between the two is that for file related writing we use ofstream or fstream object.
Laten we eens kijken naar de volgende voorbeeldcode:
Hier lezen we een regel uit de invoer en schrijven deze naar een bestand dat werd geopend met het ofstream-object.
In het onderstaande codevoorbeeld geven we een demonstratie van alle bewerkingen voor bestandsafhandeling.
hoe voer ik een jar-bestand uit
Uitgang:
Schrijven naar het bestand
Voer uw naam in: Ved
Voer uw leeftijd in: 7
Lezen uit een bestand
Door
7
In het bovenstaande programma openen we eerst een bestand in de schrijfmodus. Vervolgens lezen we gegevens, zoals naam en leeftijd, en schrijven deze naar een bestand. We sluiten dit bestand vervolgens. Vervolgens openen we hetzelfde bestand in de leesmodus en lezen we de gegevens regel voor regel uit het bestand en voeren deze naar het scherm uit.
Dit programma omvat dus alle bestands-I / O-bewerkingen.
Bestandstoestand slakken
Er zijn enkele lidfuncties die worden gebruikt om de staat van het bestand te controleren. Al deze functies retourneren een Booleaanse waarde.
We hebben deze functies als volgt in tabelvorm weergegeven:
Functie | Omschrijving |
---|---|
eof () | Geeft true terug als het einde van het bestand wordt bereikt tijdens het lezen van het bestand. |
mislukken () | Geeft true terug als de lees- / schrijfbewerking mislukt of als er een opmaakfout optreedt |
slecht() | Geeft true terug als het lezen van of schrijven naar een bestand mislukt. |
mooi zo() | Retourneert false in dezelfde gevallen waarin het aanroepen van een van de bovenstaande functies true retourneert. |
Get / Put en andere speciale operaties
De bestands-I / O-streams die we tot nu toe hebben gezien, hebben een interne get en put-positie die vergelijkbaar is met de andere I / O-streams zoals iostream.
De klasse ifstream heeft een interne get-positie die de locatie bevat van het element / teken dat in het bestand moet worden gelezen bij de volgende invoerbewerking. De class ofstream heeft een interne put-positie die de locatie bevat van het element / teken dat in de volgende uitvoerbewerking moet worden geschreven.
Overigens heeft fstream zowel get- als put-posities.
Om het lezen en schrijven van deze posities te vergemakkelijken, hebben we enkele lidfuncties die worden gebruikt om deze posities te observeren en te wijzigen.
Deze functies worden hieronder opgesomd:
Functies | Omschrijving |
---|---|
vertel () | Geeft de huidige positie van de aanwijzer terug |
tellp () | Geeft de huidige positie van de aanwijzer terug |
seekg (positie) | Verplaatsingen krijgen een pointer naar de opgegeven locatie, geteld vanaf het begin van het bestand |
seekg (offset, richting) | Verplaatsingen krijgen een aanwijzer naar de offsetwaarde ten opzichte van het punt gegeven door de parameterrichting. |
seekp (positie) | Verplaatsingen plaatsen een aanwijzer naar de opgegeven locatie, geteld vanaf het begin van het bestand |
seekp (offset, richting) | Verplaatsingen plaatsen een aanwijzer op de offsetwaarde ten opzichte van het punt dat wordt gegeven door de parameterrichting. |
De parameter richting gegeven in de bovenstaande functie prototypes is een opgesomd type type seekdir en het bepaalt het punt vanaf waar de offset wordt geteld.
Het kan de volgende waarden hebben.
ios :: beg | Offset vanaf het begin van de stream |
---|---|
ios :: cur | Offset vanaf huidige positie |
ios :: end | Offset vanaf het einde van de stream |
Laten we eens kijken naar een compleet voorbeeld dat het gebruik van deze functies laat zien.
Uitgang:
Nieuw bestand gemaakt
Initiële positie bestandsaanwijzer op: 34
Na seekp (-1, ios :: cur), positie bestandsaanwijzer op: 33
softwarepakket ontworpen om versiebeheer te automatiseren
Na seekg (5, ios :: beg), File Pointer op: 5
Na seekg (1, ios :: cur), File Pointer at: 6
Zoals getoond in het bovenstaande programma, hebben we een bestand gemaakt waarin we een regel tekst schrijven. Met behulp van de verschillende hierboven beschreven functies geven we verschillende posities van de bestandsaanwijzer weer.
Gevolgtrekking
In deze tutorial hebben we de verschillende bestandsbewerkingen gezien om gegevens van / naar een bestand te openen, te sluiten en te lezen / schrijven.
We hebben ook de functies gezien om de bestandspointer te wijzigen om toegang te krijgen tot specifieke posities in het bestand. In onze volgende tutorials zullen we een paar meer belangrijke onderwerpen bespreken die verband houden met C ++.
Lees de Easy C ++ Training Series door.
Aanbevolen literatuur
- Basis invoer- / uitvoerbewerkingen in C ++
- Invoer-uitvoer en bestanden in Python (Python openen, lezen en schrijven naar bestand)
- Basis I / O-bewerkingen in Java (invoer- / uitvoerstreams)
- Bestandsmanipulatie in Unix: overzicht van Unix-bestandssysteem
- Unix speciale tekens of metatekens voor bestandsmanipulatie
- Toegangsrechten voor Unix-bestanden: Unix Chmod, Chown en Chgrp
- VBScript-bestandsobjecten: CopyFile, DeleteFile, OpenTextFile, Read en Write Text File
- Java-implementatie: creatie en uitvoering van Java JAR-bestand