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

Flagg ios Flaggene i C ++ - dummies

Video: What does FLAG mean? English word definition 2024

Video: What does FLAG mean? English word definition 2024
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

Vanlige medikamenteffekter for legeassistenteksamen - dummies

Vanlige medikamenteffekter for legeassistenteksamen - dummies

Bli kjent med vanlige bivirkninger for legeassistenteksamen (PANCE). Den gjennomsnittlige personen over 60 år tar omtrent ni reseptbelagte medisiner og ser minst fire forskjellige helsepersonell. Potensialet for noen til å oppleve bivirkningene av disse medisinene er enorm, og det er potensialet for signifikante legemiddelinteraksjoner. ...

Epidemiologiske studier dekket av legeassistenteksamen - dummies

Epidemiologiske studier dekket av legeassistenteksamen - dummies

For legeassistenteksamen (PANCE) du bør være oppmerksom på forskjellene mellom typer epidemiologiske studier. Det første trinnet er å gjenkjenne om studiet er en retrospektiv studie eller en prospektiv studie: Retrospektiv: En retrospektiv studie betyr at du ser på fortiden for å finne ut hva som skjedde. For eksempel, en ...

Forhold som påvirker pleura dekket på legeassistenteksamen - dummies

Forhold som påvirker pleura dekket på legeassistenteksamen - dummies

Du kan se Spørsmål om legeassistenteksamen om forhold som påvirker pleura. Du må vurdere evaluering og behandling av pleural effusions, pneumothorax og pleurisy. Væske rundt lungene: Pleural effusjon Normalt er pleura et tomt rom; en pleural effusjon er ganske enkelt væske som opptar den plassen. Pleural ...

Redaktørens valg

Slik setter du automatiske varsler på LinkedIn - dummies

Slik setter du automatiske varsler på LinkedIn - dummies

Sikkert, du kan gjøre alt fotverket ved å gå til LinkedIn hjemmesiden og ser deg rundt for å se hvilke meldinger eller endringer som har skjedd. Den sanne kraften til å holde kontakten, har imidlertid LinkedIn, kontakter deg automatisk med den informasjonen du trenger for å holde deg informert. Klikk på Administrer-koblingen ved siden av Personvern og innstillinger ...

Tips for å administrere dine LinkedIn Post-interaksjoner - dummies

Tips for å administrere dine LinkedIn Post-interaksjoner - dummies

Når du klikker Publiser på LinkedIn, kan du tenke at jobb er ferdig, men det er bare begynt. Etter hvert som flere og flere leser innlegget ditt, kan de samhandle med innlegget og med deg som forfatter. Her er noen ting å huske på etter at du har publisert et innlegg: Overvåk statistikken. Når du ...

Forstå LinkedIn Pulse - dummies

Forstå LinkedIn Pulse - dummies

Har du sjekket ut LinkedIn Pulse ennå? Tenk deg om du leser en avis som bare viste deg artikler som har betydning for deg. (For det hele, for mange av dere, tenk på de dagene du kanskje har lest en avis.) Tilpassede nyheter er mulige, og på LinkedIn kalles det LinkedIn Pulse. Alt du trenger å gjøre for å ...

Redaktørens valg

Hva Dragon NaturallySpeaking kan gjøre for deg - dummies

Hva Dragon NaturallySpeaking kan gjøre for deg - dummies

Noe om å diktere til en datamaskin vekker alle slags urealistiske forventninger hos mennesker. Hvis du forventer at du skal servere deg frokost på sengen, har du lykke til. Denne artikkelen ble ikke skrevet ved å si "Computer, skriv en bok om NaturallySpeaking. "Forfatteren måtte diktere det ord for ord, akkurat som hun ville hatt ...

Når Start ikke starter i NaturallySpeaking - dummies

Når Start ikke starter i NaturallySpeaking - dummies

Når du gir kommandoen "Start" til Dragon NaturallySpeaking, du sier "Start America Online" eller "Start Microsoft Works" eller "Start Quicken", og programmet skal åpnes. Men hva hvis det ikke gjør det? Hva er greia? Start-kommandoen starter et program som er installert på maskinen din, og har enten et snarveisikon på ...

Når NaturallySpeaking Menykommandoer ikke fungerer - dummies

Når NaturallySpeaking Menykommandoer ikke fungerer - dummies

Når du gir en kommando til NaturallySpeaking, for eksempel "Klikk" og ingenting skjer, det sannsynlige problemet er at menyen Bruk menyer som er kompatible med skjermlesere, ikke er merket av. For å sjekke det: Velg Verktøy → Valg i vinduet NaturallySpeaking. Det er ikke noe poeng å fortelle deg hvordan du får tilgang til dette med stemmen, for det er akkurat ...