Hem Personliga finanser Flagga ios-flaggarna i C ++-dummies

Flagga ios-flaggarna i C ++-dummies

Video: Flagga 2024

Video: Flagga 2024
Anonim

När du öppnar en fil genom att bygga antingen en uppströms eller omströmsinstans kan du ändra hur filen öppnas genom att tillhandahålla vad som kallas flaggor. I datorns termer är en flagga helt enkelt ett litet föremål vars närvaro eller brist på närvaro berättar en funktion hur man gör något. Med uppströms- och ifströmsklasserna är den aktuella funktionen konstruktören.

En flagga ser ut som ios:: app om du använder en kompilator som inte är fullständigt ANSI-kompatibel, eller ser ut som ios_base:: app om du använder en som är fullständigt ANSI-kompatibel. Den här flaggan innebär att du vill skriva till en fil, men du vill lägga till befintliga data som redan finns i en fil. Du tillhandahåller denna flagga som ett argument för konstruktören för uppströms, som i något av följande exempel:

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

Du kan se att flaggan läggs till som en andra parameter till konstruktören. Andra flaggor finns förutom app, och du kan kombinera dem med hjälp av eller operatören, |. En flagga är till exempel ios:: nocreate (som inte ingår i nyare kompilatorer).

Den här betyder "bara öppna filen om den redan finns. "Det vill säga, skapa inte filen om den inte existerar. (Kom ihåg att uppströms skapar en fil om den inte existerar.) Om filen inte existerar, kommer den öppna att misslyckas, och när du ringer misslyckas kommer du tillbaka en sann .

Ios:: nocreate flaggan är praktisk med ios:: app. Tillsammans betyder dessa en befintlig fil och lägger till den . Det vill säga de två tillsammans kommer bara att fungera om filen redan existerar, och samtalet öppnar filen för en tilläggsoperation. Om filen inte existerar kommer filen inte att skapas. Här är ett provsamtal:

ofstream outfile ("… / MyFile.txt", ios:: app | ios:: nocreate); om (outfile. fail ()) {cout << "kunde inte öppna filen!" << endl; returnera 0;} outfile << "hej" << endl; utfil. stänga();

Om MyFile. txt existerar inte när du kör den här koden, du får meddelandet Kunde inte öppna filen! Men om MyFile. txt existerar, programmet öppnar det, lägger till strängen Hej till det, och slutligen stänger den.

Det visar sig att den nocreate flaggan inte är tillgänglig i det nya standardbiblioteket. Besvikelse. Koden fungerar därför endast om du använder en tidigare version av biblioteket. När du använder koden:: Blocker kompilator ser du följande felmeddelande:

fel: 'nocreate' är inte medlem i '; std:: ios '

Men du vill testa om din kompilator innehåller ett bibliotek som stöder iOS:: nocreate.Din kompilator kan stödja det ändå, även om det innehåller det nya standardbiblioteket. Som ett alternativ till ios:: nocreate kan du använda följande kod (finns i FileOutput02-exemplet):

ifstream infile ("… / MyFile. Txt"); om (infile. fail ()) {cout << "kunde inte öppna filen!" << endl; returnera 0;} infile. stänga(); ofstream outfile ("… / MyFile. txt", ios:: app); outfile << "hej" << endl; utfil. stänga();

I det här fallet börjar du genom att försöka öppna filen för läsning. Om filen inte existerar kan du inte läsa av den och koden avslutas med ett felmeddelande. Om koden kan läsa från filen, öppnar den filen igen för att skriva. Det här är en besvärlig lösning, men det fungerar.

Följande är en lista över tillgängliga flaggor. Först här är de för ios, om du använder en kompilator som inte är fullständigt ANSI-kompatibel:

  • ios:: app: Den här flaggan innebär att du vill öppna en fil och lägga till den.

  • ios:: in: Inkludera denna flagga om du vill läsa från en fil.

  • ios:: out : Inkludera denna flagga om du vill skriva till en fil.

  • ios:: trunc : Inkludera denna flagga om du vill torka bort innehållet i filen innan du skriver till den. Det är motsatsen till att lägga till, och det är också standard om du inte specifikt innehåller ios:: app.

  • ios:: nocreate : Använd den här flaggan om du vill se till att filen inte skapas om den inte finns, vilket leder till att filen inte öppnas.

  • ios:: noreplace : Denna flagga är motsatt av nocreate. Använd den här flaggan om du bara vill skapa en ny fil. Om du använder den här flaggan och filen redan existerar öppnas filen inte och det felet kommer att returneras sant .

ANSI-kompatibla kompilatorer stöder inte heller iOS:: noreplace-flaggan. I det här fallet kan du använda motsatsen till åtgärden för ios: nocreate-flaggan, som visas här (och finns i FileOutput03-exemplet):

ifstream infile ("… / MyFile. Txt"); om (! infile. fail ()) {cout << "filen finns redan!" << endl; returnera 0;} infile. stänga(); ofstream outfile ("… / MyFile. txt"); outfile << "hej" << endl; utfil. stänga();

I det här fallet försöker koden att öppna filen för läsning. Om filen finns visas koden ett felmeddelande och utgångar. Annars skapar koden en ny fil och skriver till den.

Följande flaggor finns i en komprimerare som är absolut ANSI-kompatibel!

  • ios:: ate: Använd den här flaggan för att gå till slutet av filen efter att du öppnat den. Normalt använder du den här flaggan när du vill lägga till data i filen.

  • ios_base:: binär: Använd den här flaggan för att ange att filen du öppnar kommer att hålla binär data - det vill säga data som inte representerar teckensträngar.

  • ios_base:: in: Ange denna flagga när du vill läsa från en fil.

  • ios_base:: out: Inkludera denna flagga när du vill skriva till en fil.

  • ios_base:: trunc: Inkludera denna flagga om du vill radera innehållet i en fil innan du skriver till den.

  • ios_base:: app: Inkludera den här flaggan om du vill lägga till filen. Det är motsatsen till trunc - det vill säga den information som redan finns i filen när du öppnar den kommer att stanna kvar där.

Varför behöver du en flagga och en flagga? Det verkar som om datorn ska veta om du skriver till en fil eller läser av den, beroende på respektive om du använder stream eller omström. Svaret på varför du har en in-flagga och en ut-flagga är att andra klasser är tillgängliga förutom stream och ifstream.

Samlarna som ännu inte fullt ut stöder ANSI-standarden har en generisk klass i sina bibliotek som heter fstream. ANSI-kompatibla kompilatorer har i sina bibliotek en mallklass som heter basic_filebuf och en klass som heter filebuf. Om du använder dessa klasser kan du använda in och ut flaggor.

Flagga ios-flaggarna i C ++-dummies

Redaktörens val

Hitta hur du betalar webbplatser i online dating - dummies

Hitta hur du betalar webbplatser i online dating - dummies

Du får vad du betalar för I livet ingår Internet-dating webbplatser. Till skillnad från gratis webbplatser, med lönesidor har du inte huvudvärk på oändliga reklammeddelanden som skriker i ditt ansikte. Dessutom är omfattningen av täckning och tillgängliga funktioner bred och robust. Solid tillsyn tillhandahålls (för att gräva ut wackos) och lämpliga hinder ...

Dating för Dummies Cheat Sheet - dummies

Dating för Dummies Cheat Sheet - dummies

Dating behöver inte vara nervös, men det kräver förberedelse . Du måste göra en uppriktig själsökning så att du är redo att vara ärlig, öppen och uppmärksam. Du behöver en stark känsla för dina dejtingförväntningar så att du tydligt kan kommunicera vad du letar efter utan att ställa in baren så hög att ingen ...

Få passar för dating igen efter 50 - dummies

Få passar för dating igen efter 50 - dummies

Copyright © 2014 AARP All rights reserved. Du behöver inte vara frisk och frisk efter 50, men det hjälper säkert om du är. Om du inte är något av dessa saker, behöver du inte ge upp och tycker att det är för sent att komma dit. Många börjar träningsregler så sent som ålder ...

Redaktörens val

ÄR ett au pair rätt för din familj? - dummies

ÄR ett au pair rätt för din familj? - dummies

Det är viktigt att undersöka dina specifika familjeförhållanden för att avgöra om ett au pair är rätt barnomsorg för din familj. Du kanske bestämmer dig för att anställa ett au pair i stället för daghem, barnbarn eller barnpassare om du vill utsätta din familj för en ny kultur. Är ...

Online-verktyg för familjebudgetar - dummies

Online-verktyg för familjebudgetar - dummies

Vissa familjer kan tycka att den mest användbara aspekten av att bo i en värld med nästan oändliga onlineverktyg innebär att kunna budgetera för familjen med dessa verktyg. Följande tre onlinetjänster erbjuder familjer ett sätt att organisera familjeutgifter online, dela åtkomst till säkra konton och eliminera några av papperet ...

Barn som Online Entreprenörer - Dummies

Barn som Online Entreprenörer - Dummies

Levande i en digital värld tillåter barnen obegränsade möjligheter när det gäller entreprenörskap. Denna digitala tidsålder ger barnen en unik färdighetssats med möjlighet att dela den färdigheten med andra och lägga till "onlineföretagare" till listan över möjliga efterskolor och sommarjobb som finns tillgängliga för barn idag. Spelskapande Ett område där digitalt ...

Redaktörens val

Word 2007 Mail Merge - Steg 3: Byggnadsrekord - dummies

Word 2007 Mail Merge - Steg 3: Byggnadsrekord - dummies

Efter att ha definierat de fält du behöver för din Word 2007-postfusion, är nästa steg att slutföra adresslistan. För att göra det skapar du en lista över poster genom att ange data för varje fält i varje post. Detta händer i dialogrutan Ny adresslista. Kom ihåg att fält är kolumner och ...

Word 2007 Mail Merge - Steg 5: Final Merge - dummies

Word 2007 Mail Merge - Steg 5: Final Merge - dummies

Med sammanfogningsfälten infogad i huvudversionen av Word 2007-dokumentet och adresslistan stannar, är du redo att starta din mailfusion! Spara huvuddokumentet. Klicka på knappen Förhandsgranska resultat. Fälten i huvuddokumentet försvinner! De ersätts av information från den första posten i adresslistan. Så här ...