Hjem Personlig finansiering Flagg ios Flaggene i C ++ - dummies

Flagg ios Flaggene i C ++ - dummies

Video: What does FLAG mean? English word definition 2025

Video: What does FLAG mean? English word definition 2025
Anonim

Når du åpner en fil ved å bygge enten en oppstrøms eller omstrøms forekomst, kan du endre måten filen åpner ved å levere det som kalles flagg. I datamaskinbetingelser er et flagg ganske enkelt et lite element hvis tilstedeværelse eller mangel på nærvær forteller en funksjon hvordan man gjør noe. Med oppstrøms- og omstrømsklassene er den aktuelle funksjonen konstruktøren.

Et flagg ser ut som ios:: app hvis du bruker en kompilator som ikke er fullstendig ANSI-kompatibel, eller ser ut som ios_base:: app hvis du bruker en som er fullstendig ANSI-kompatibel. Dette bestemte flagget betyr at du vil skrive til en fil, men du vil legge til eksisterende data som allerede finnes i en fil. Du leverer dette flagget som et argument fra konstruktøren for avstrøm, som i ett av følgende eksempler:

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

Du kan se at flagget er lagt til som en andre parameter til konstruktøren. Andre flagger finnes i tillegg til app, og du kan kombinere dem ved å bruke eller operatøren, |. For eksempel er et flagg iOS:: nocreate (som ikke er inkludert i nyere kompilatorer).

Denne betyr at "bare åpne filen hvis den allerede finnes. "Det vil si, ikke opprett filen hvis den ikke eksisterer. (Husk at stream genererer en fil hvis den ikke allerede eksisterer.) Hvis filen ikke eksisterer, vil den åpne mislykkes, og når du ringer mislykkes, vil du få tilbake en ekte .

Ios:: nocreate flagg er praktisk med ios:: app. Sammen betyr dette at åpner en eksisterende fil og legger til den . Det vil si at de to sammen vil fungere bare hvis filen allerede eksisterer, og samtalen åpner filen for en tilleggsoperasjon. Hvis filen ikke eksisterer, vil filen ikke bli opprettet. Her er en samtalekall:

ofstream outfile ("… / MyFile.txt", ios:: app | ios:: nocreate); hvis (outfile. fail ()) {cout << "kunne ikke åpne filen!" << endl; return 0;} outfile << "hei" << endl; outfile. Lukk();

Hvis MyFile. txt eksisterer ikke når du kjører denne koden, får du meldingen Kunne ikke åpne filen! Men hvis MyFile. txt eksisterer, applikasjonen åpner den, legger strenget hei til det, og til slutt lukker det.

Det viser seg at det nocreate flagget ikke er tilgjengelig i det nye standardbiblioteket. Nedtur. Koden fungerer derfor bare hvis du bruker en tidligere versjon av biblioteket. Når du bruker koden:: Blokker kompilator, ser du følgende feilmelding:

feil: 'nocreate' er ikke medlem av '; std:: ios '

Men du vil teste om din spesifikke kompilator inneholder et bibliotek som støtter IOS:: nocreate.Kompilatoren din kan likevel støtte det uansett, selv om den inneholder det nye standardbiblioteket. Som et alternativ til ios:: nocreate, kan du bruke følgende kode (funnet i FileOutput02 eksempelet):

ifstream infile ("… / MyFile. Txt"); hvis (infile. fail ()) {cout << "ikke kunne åpne filen!" << endl; return 0;} infile. Lukk(); ofstream outfile ("… / MyFile. txt", ios:: app); outfile << "hei" << endl; outfile. Lukk();

I dette tilfellet begynner du ved å prøve å åpne filen for å lese. Hvis filen ikke eksisterer, kan du ikke lese fra den og koden går ut med en feilmelding. Hvis koden kan lese fra filen, gjenåpnes filen for å skrive. Dette er en tungvint løsning, men det fungerer.

Følgende er en liste over tilgjengelige flagg. Først her er de for ios, hvis du bruker en kompilator som ikke er helt ANSI-kompatibel:

  • ios:: app: Dette flagget betyr at du vil åpne en fil og legge til den.

  • ios:: i: Inkluder dette flagget hvis du vil lese fra en fil.

  • ios:: ut : Inkluder dette flagget hvis du vil skrive til en fil.

  • ios:: trunc : Inkluder dette flagget hvis du vil slette innholdet i filen før du skriver til det. Det er motsatt av å legge til, og det er også standard hvis du ikke spesifikt inkluderer iOS:: app.

  • ios:: nocreate : Bruk dette flagget hvis du vil forsikre deg om at filen ikke vil bli opprettet hvis den ikke eksisterer, slik at filen ikke åpnes.

  • ios:: noreplace : Dette flagget er det motsatte av nocreate. Bruk dette flagget hvis du bare vil opprette en ny fil. Hvis du bruker dette flagget og filen allerede eksisterer, åpnes ikke filen, og feilen vil returnere sann .

ANSI-kompatible kompilatorer støtter ikke ikonet:: noreplace flagg heller. I dette tilfellet kan du bruke det motsatte av løsningen for ios: nocreate flagg, som vist her (og funnet i FileOutput03 eksempelet):

ifstream infile ("… / MyFile. Txt"); hvis (! infile. fail ()) {cout << "filen eksisterer allerede!" << endl; return 0;} infile. Lukk(); ofstream outfile ("… / MyFile. txt"); outfile << "hei" << endl; outfile. Lukk();

I dette tilfellet forsøker koden å åpne filen for å lese. Hvis filen eksisterer, viser koden en feilmelding og utganger. Ellers oppretter koden en ny fil og skriver til den.

Følgende flagg er tilgjengelig i en kompliant som er helt ANSI-kompatibel!

  • ios:: spiste: Bruk dette flagget til å gå til slutten av filen etter at du har åpnet den. Normalt bruker du dette flagget når du vil legge til data i filen.

  • ios_base:: binær: Bruk dette flagget til å angi at filen du åpner, vil inneholde binære data - det vil si data som ikke representerer tegnstrenger.

  • ios_base:: i: Angi dette flagget når du vil lese fra en fil.

  • ios_base:: out: Inkluder dette flagget når du vil skrive til en fil.

  • ios_base:: trunc: Inkluder dette flagget hvis du vil slette innholdet i en fil før du skriver til det.

  • ios_base:: app: Inkluder dette flagget hvis du vil legge til filen. Det er det motsatte av trunc - det vil si at informasjonen som allerede er i filen når du åpner den, forblir der.

Hvorfor trenger du et flagg og et flagg? Det ser ut til at datamaskinen skal vite om du skriver til en fil eller leser fra den, avhengig av (henholdsvis) om du bruker stream eller omstrøm. Svaret på hvorfor du har et flagg og et flagg er at andre klasser er tilgjengelige i tillegg til stream og ifstre.

Kompilatørene som ennå ikke fullt ut støtter ANSI-standarden, har en generisk klasse i sine biblioteker kalt fstream. ANSI-kompatible kompilatorer har i deres biblioteker en mal klasse som heter basic_filebuf og en klasse som heter filebuf. Hvis du bruker disse klassene, kan du bruke inn- og ut-flaggene.

Flagg ios Flaggene i C ++ - dummies

Redaktørens valg

Hvordan lage Baseball Practice Fun - Dummies

Hvordan lage Baseball Practice Fun - Dummies

Som baseball trener må du ikke bare lære laget ditt grunnleggende i spillet, må du lære disse grunnleggende morsomme, slik at spillerne blir interessert og engasjert. Bruk tipsene i følgende liste for å gjøre baseballøvelsen morsom: Sørg for mange repetisjoner for hvert barn. Stopp treningen kort ...

Basisspillers ansvar i Baseball - dummies

Basisspillers ansvar i Baseball - dummies

Baseball trener er ikke bare ansvarlige for lagspillet som en hel, men for coaching spillere når de når første og tredje base i løpet av et baseballspill. Ansvaret for å coaching hver base er forskjellig. Hva en første basissjåfør gjør: Oppfordrer smeten til å kaste ned første baseline på infield hits. ...

Hvordan fantasy baseball ligaene blir scoret - dummies

Hvordan fantasy baseball ligaene blir scoret - dummies

Fantasy baseball har tre hovedspillformater som bestemmer hvordan ligaen din score punkter. Spillformatene for fantasybaseball er Rotisserie, Head-to-Head One Win og Point System. Hvert format blir scoret avhengig av ligaoppsettet. For eksempel vil 5 × 5 liga score poeng eller gevinster / tap på fem forhåndsvalgte treffstatistikk, samt fem ...

Redaktørens valg

Praktiserer dag til dag, uformell oppmerksomhet - dummies

Praktiserer dag til dag, uformell oppmerksomhet - dummies

Kan trene det når som helst. Uformell oppmerksomhet meditasjon er når du trener oppmerksomhet uten å skille ut en spesiell tid for det. Her er ti eksempler på uformell oppmerksomhet: Mindful kommunikasjon - Når du snakker eller hører på noen andre, blir du klar over lyden av ...

Forbli lekfull og lyshjerte når du praktiserer Mindfulness - dummies

Forbli lekfull og lyshjerte når du praktiserer Mindfulness - dummies

En nydelig holdning til å ha oppmerksomhet og Livet generelt er lekenhet og lethed. Hvis en meditasjon ikke virker for deg første gang eller ikke føles riktig for deg, ikke vær panikk, men tenk på opplevelsen som et eksperiment som du kan prøve igjen senere. Tilnærming oppmerksomhet som du ville et nytt spill eller ...

Redaktørens valg

Valg av resolusjonsstørrelse på et Canon EOS Rebel T3-serie kamera - dummies

Valg av resolusjonsstørrelse på et Canon EOS Rebel T3-serie kamera - dummies

For å bestemme seg for en Kvalitetsinnstilling (eller bildeoppløsningstørrelse) for Canon Rebel T3 eller T3i, den første avgjørelsen du må gjøre er hvor mange piksler du vil at bildet skal inneholde. Piksler er de små firkantede fliser hvorfra alle digitale bilder er laget; piksel er kort for bildeelement. Hvis din ...

Hvordan du lager videobilder på Rebel T7i / 800D - dummies

Hvordan du lager videobilder på Rebel T7i / 800D - dummies

Videoopplastingsfunksjonen på Canon EOS Rebel T7i / 800D fanger korte videoklipp som er sydd i et enkelt opptak, kalt et videoalbum. Du kan stille klippelengden til 8, 4 eller 2 sekunder lang (men alle klippene i et album må ha samme lengde). Med tanke på individets korthet ...