Huis Persoonlijke financiën Markeert de ios-vlaggen in C ++ - dummies

Markeert de ios-vlaggen in C ++ - dummies

Video: Section: Debugging with Dan Armendariz 2024

Video: Section: Debugging with Dan Armendariz 2024
Anonim

Wanneer u een bestand opent door een ofstream- of ifstream-instantie te construeren, kunt u de manier wijzigen waarop het bestand wordt geopend door zogenaamde flags te leveren. In computertermen is een -markering eenvoudigweg een klein item waarvan de aanwezigheid of het gebrek aan aanwezigheid een functie aangeeft om iets te doen. Met de ofstream- en ifstream-klassen is de betreffende functie de constructor.

Een vlag ziet eruit als ios:: app als u een compiler gebruikt die niet volledig ANSI-compatibel is, of eruitziet als ios_base:: app als u er een gebruikt die volledig ANSI-compatibel is. Deze specifieke vlag betekent dat u naar een bestand wilt schrijven, maar dat u wilt toevoegen aan bestaande gegevens die zich al in een bestand bevinden. U levert deze vlag als een argument van de constructor voor ofstream, zoals in een van de volgende voorbeelden:

ofstream outfile ("AppendableFile. Txt", ios:: app); ofstream outfile ("AppendableFile. txt", ios_base:: app);

U kunt zien dat de vlag als een tweede parameter aan de constructor is toegevoegd. Naast de app bestaan ​​andere vlaggen en u kunt ze combineren met de operator of, |. Eén vlag is bijvoorbeeld ios:: nocreate (dat niet is opgenomen in nieuwere compilers).

Dit betekent "open het bestand alleen als het al bestaat. "Dat wil zeggen, maak het bestand niet aan als het niet bestaat. (Denk eraan, ofstream maakt een bestand als het nog niet bestaat.) Als het bestand niet bestaat, mislukt het openen en wanneer u een melding faxt, krijgt u een echte terug.

De ios:: nocreate-vlag is handig bij ios:: app. Samen betekent dit dat een bestaand bestand opent en eraan wordt toegevoegd . Dat wil zeggen, de twee samen werken alleen als het bestand al bestaat en de aanroep opent het bestand voor een appendage. Als het bestand nog niet bestaat, wordt het bestand niet gemaakt. Hier is een voorbeeldvraag:

ofstream outfile ("… / MyFile. Txt", ios:: app | ios:: nocreate); if (outfile. fail ()) {cout << "kon het bestand niet openen!" << endl; return 0;} outfile << "hi" << endl; outfile. dichtbij();

Als MyFile. txt bestaat niet wanneer u deze code uitvoert, krijgt u het bericht Kon het bestand niet openen! Maar als MyFile. txt bestaat, de applicatie opent het, voegt de string hallo toe, en tenslotte sluit het.

Het blijkt dat de vlag nocreate niet beschikbaar is in de nieuwe standaardbibliotheek. Jammer. Daarom werkt de code alleen als u een eerdere versie van de bibliotheek gebruikt. Bij gebruik van de code:: blokkeert de compiler, ziet u het volgende foutbericht:

fout: 'nocreate' is geen lid van '; std:: ios '

U wilt echter testen of uw specifieke compiler een bibliotheek bevat die ios ondersteunt:: nocreate.Uw compiler ondersteunt dit hoe dan ook, zelfs als deze de nieuwe standaardbibliotheek bevat. Als een alternatief voor ios:: nocreate, kunt u de volgende code gebruiken (gevonden in het voorbeeld FileOutput02):

ifstream infile ("… / MyFile. Txt"); if (infile. fail ()) {cout << "kon het bestand niet openen!" << endl; return 0;} infile. dichtbij(); ofstream outfile ("… / MyFile. txt", ios:: app); uitbesteden << "hi" << endl; outfile. dichtbij();

In dit geval begint u met het openen van het bestand om te lezen. Als het bestand niet bestaat, kunt u er niet vanaf lezen en wordt de code afgesloten met een foutbericht. Als de code uit het bestand kan lezen, wordt het bestand opnieuw geopend om te worden geschreven. Dit is een omslachtige oplossing, maar het werkt.

Hieronder volgt een lijst met beschikbare vlaggen. Ten eerste, hier zijn degenen voor ios, voor het geval u een compiler gebruikt die niet volledig ANSI-compliant is:

  • ios:: app: deze vlag betekent dat u een bestand wilt openen en eraan wilt toevoegen.

  • ios:: in: voeg deze vlag toe als u vanuit een bestand wilt lezen.

  • ios:: out : Neem deze vlag op als u naar een bestand wilt schrijven.

  • ios:: trunc : Neem deze vlag op als u de inhoud van het bestand wilt wissen voordat u ernaar schrijft. Het is het tegenovergestelde van append, en het is ook de standaard als je ios:: app niet specifiek toevoegt.

  • ios:: nocreate : Gebruik deze vlag als u ervoor wilt zorgen dat het bestand niet wordt gemaakt als het niet bestaat, waardoor het bestand niet wordt geopend.

  • ios:: noreplace : Deze vlag is het tegenovergestelde van nocreate. Gebruik deze vlag als u alleen een nieuw bestand wilt maken. Als u deze vlag gebruikt en het bestand al bestaat, wordt het bestand niet geopend en geeft die fout true .

ANSI-compilers ondersteunen de ios: noreplace-vlag ook niet. In dit geval kunt u het tegenovergestelde van de fix gebruiken voor de vlag ios: nocreate, zoals hier wordt weergegeven (en gevonden in het FileOutput03-voorbeeld):

ifstream infile ("… / MyFile. Txt"); if (! infile. fail ()) {cout << "het bestand bestaat al!" << endl; return 0;} infile. dichtbij(); ofstream outfile ("… / MyFile. txt"); uitbesteden << "hi" << endl; outfile. dichtbij();

In dit geval probeert de code het bestand te openen voor lezen. Als het bestand bestaat, geeft de code een foutmelding en wordt afgesloten. Anders maakt de code een nieuw bestand en schrijft het ernaar.

De volgende vlaggen zijn beschikbaar in een complier die absoluut ANSI-compliant is!

  • ios:: at: gebruik deze vlag om naar het einde van het bestand te gaan nadat je het hebt geopend. Normaal gesproken gebruikt u deze vlag wanneer u gegevens aan het bestand wilt toevoegen.

  • ios_base:: binary: gebruik deze vlag om op te geven dat het bestand dat u opent binaire gegevens bevat, dat wil zeggen gegevens die geen tekenreeksen vertegenwoordigen.

  • ios_base:: in: geef deze vlag op wanneer u vanuit een bestand wilt lezen.

  • ios_base:: out: Neem deze vlag op wanneer u naar een bestand wilt schrijven.

  • ios_base:: trunc: voeg deze vlag toe als u de inhoud van een bestand wilt wissen voordat u ernaar schrijft.

  • ios_base:: app: voeg deze vlag toe als u aan het bestand wilt toevoegen. Het is het tegenovergestelde van trunc - dat wil zeggen, de informatie die al in het bestand staat wanneer je het opent, blijft daar staan.

Waarom heb je een in-vlag en een uit-vlag nodig? Het lijkt erop dat de computer moet weten of u naar een bestand schrijft of leest, afhankelijk van (respectievelijk) of u stream of ifstream gebruikt. Het antwoord op waarom u een in-vlag en een uit-vlag heeft, is dat andere klassen naast ofstream en ifstream beschikbaar zijn.

De compilers die de ANSI-standaard nog niet volledig ondersteunen, hebben een generieke klasse in hun bibliotheken die fstream worden genoemd. De ANSI-compilers hebben in hun bibliotheken een template-klasse met de naam basic_filebuf en een klasse genaamd filebuf. Als u deze klassen gebruikt, kunt u de in en uit-vlaggen gebruiken.

Markeert de ios-vlaggen in C ++ - dummies

Bewerkers keuze

Een Oracle-omgeving instellen - dummies

Een Oracle-omgeving instellen - dummies

Als u een typische PL / SQL-omgeving wilt instellen, hebt u de volgende componenten: Databaseserver: dit is een computer (of een reeks computers) die de Oracle-database uitvoert. Oracle werkt in veel populaire computeromgevingen. De meest gebruikte met Oracle zijn UNIX, Linux of een versie van Microsoft Windows. PL / SQL wordt meestal uitgevoerd ...

SQL-rijwaarden en -waarden - dummies

SQL-rijwaarden en -waarden - dummies

De waarden die worden bewaard in de cellen die de snijpunten van de SQL-database vormen De rijen en kolommen van de tabel zijn de grondstoffen waaruit u zinvolle relaties en trends kunt afleiden. Rijwaarden De meest zichtbare waarden in een database zijn tabelrijwaarden. Dit zijn de waarden die elke rij van een databasetabel ...

SQL eerste, tweede en derde normale vormen - dummies

SQL eerste, tweede en derde normale vormen - dummies

Er zijn drie bronnen van wijzigingsanomalieën in SQL Deze worden gedefinieerd als eerste, tweede en derde normale vormen (1NF, 2NF, 3NF). Deze normale vormen fungeren als remedies voor het wijzigen van anomalieën. Eerste normale vorm Om in de eerste normale vorm (1NF) te zijn, moet een tabel de volgende eigenschappen hebben: De tabel is tweedimensionaal met rijen en ...

Bewerkers keuze

Een kijkje nemen in het syndroom van Empty-Nest - dummies

Een kijkje nemen in het syndroom van Empty-Nest - dummies

Een veel voorkomende misvatting is dat wanneer de kinderen van een stel vertrekken thuis, zullen pappa en mama het syndroom van empty-nest ontwikkelen. Ja, ze hebben misschien een leeg nest, maar voor sommige paren bloeit hun liefdesleven in deze periode van hun leven. De slachtoffers van het syndroom zijn de paren waarvan de relatie uit elkaar valt als zij de enige ...

STD's: wat u moet weten over herpes - dummies

STD's: wat u moet weten over herpes - dummies

Herpes, veroorzaakt door het herpes simplex-virus (HSV) ), is een ongeneeslijke SOA. Herpes heeft eigenlijk twee vormen: herpes simplex-type 1 (HSV-1) en herpes simplex-type 2 (HSV-2). HSV-1 wordt meestal geassocieerd met koortsblaasjes en koortsblaren boven de taille. "Ongeveer 80 procent van de Amerikaanse volwassenen heeft orale herpes. Ongeveer 25 procent van ...

Tiener Geslacht: hoe te weten Hoe ver te gaan - dummies

Tiener Geslacht: hoe te weten Hoe ver te gaan - dummies

Een van de grootste vragen voor tieners is niet "Zou ik seks moeten hebben? "Maar" Hoe ver moet ik gaan? "Terwijl het eigen comfortniveau en dat van de partner de topprioriteit zou moeten zijn in deze beslissing, spelen andere factoren een rol, vooral als tieners dat amorfe concept van" het derde honk overwegen. "" Derde basis "...

Bewerkers keuze

Tien voorwaarden American Football Announcers Gebruik - dummies

Tien voorwaarden American Football Announcers Gebruik - dummies

Een van de moeilijkste en meest intimiderende onderdelen over het volgen van een Amerikaans voetbalwedstrijd is dat de presentatoren soms een vreemde taal lijken te spreken die alleen bekend is bij echte voetballiefhebbers. Maar als je een aantal belangrijke termen onthoudt, ben je ver voor op het spel. Hier zijn enkele voetbaltermen die je misschien hoort, ...

Het begin van een voetbalspel: The Kickoff - dummies

Het begin van een voetbalspel: The Kickoff - dummies

Voor Amerikaanse voetbalfans, de openingsaftrap is een opwindende start voor elke game. Ze zien de tweezijdige sensatie van het ene team dat probeert het andere te blokkeren en helpt de herhaler om door en voorbij 11 snelladers van het trapende team te rennen. (Wel, maak die tien spelers.De kicker staat meestal rond de 50-yard-lijn, ...

Uw voetbalcoachtoelen afstemmen op een leeftijdsgroep - dummies

Uw voetbalcoachtoelen afstemmen op een leeftijdsgroep - dummies

Elk kind in uw team is anders zoveel manieren. Sommigen zijn begaafde hardlopers, anderen kunnen duizelingwekkende vangsten maken en wat moeite om simpelweg de basistechnieken van het spel te vatten. Ongeacht de sterke en zwakke punten van de kinderen, die overal op de kaart staan, hebben jongeren algemene kenmerken die worden beïnvloed ...