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

Hur man tar bort eller minimerar webbdelar i SharePoint 2013 - dummies

Hur man tar bort eller minimerar webbdelar i SharePoint 2013 - dummies

Du har två alternativ för att ta bort en webbdel från din SharePoint-sida - stängning eller radering. Att stänga en webbdel lämnar webbdelen på sidan så att du kan aktivera den igen för framtida användning. Att ta bort webbdelen tar bort webbdelen från din sida (men tar inte bort den från SharePoint). Till ...

För att ladda ner Apps från SharePoint Store - dummies

För att ladda ner Apps från SharePoint Store - dummies

Förutom de appar som följer med SharePoint, Du kan också lägga till appar från tredje part. Dessa tredjepartsprogram visas i SharePoint-butiken. Om du använder SharePoint Online har du tillgång till hela butiken. Om du använder SharePoint On-Premise kan dina lokala IT-administratörer ha låst ned de appar som ...

Hur man visar visningar via webbdelar i SharePoint 2013 - dummies

Hur man visar visningar via webbdelar i SharePoint 2013 - dummies

Du vill visa din SharePoint appdata med annan text och webbdelar på flera platser, till exempel hemsidor för hemsida, webbsidor eller publiceringssidor. I dessa situationer vill du inte att dina användare ska interagera med själva appen med alla redigeringsalternativ. Du vill bara att de ska se flera ...

Redaktörens val

Vad är Kik? - dummies

Vad är Kik? - dummies

Grundades 2009, är Kik en gratis snabbmeddelandeprogram utvecklad från Kik Interactive. Kik är tillgängligt på Android, Windows Phone och iOS-enheter. Applikationen är modellerad efter BlackBerry Messenger. Kik använder den befintliga smarttelefonens dataplan eller Wi-Fi för att skicka och ta emot meddelanden, videoklipp, foton, mobila webbsidor, skisser och annat innehåll. ...

ÖVersätt Twitter Slang och Jargon - dummies

ÖVersätt Twitter Slang och Jargon - dummies

Diskussioner om och om Twitter är fulla med alla slags förkortningar och jargong som kan förvirra nya Twitter-användare. Vad talar folk om (och tweeting) om? Följande ordlista definierar några av de förvirrande förkortningarna och Twitter-lingo du kan komma över. AFAIK: Så vitt jag vet. bot: Ett konto som drivs av en ...

Vad är Letgo? - dummies

Vad är Letgo? - dummies

Letgo är en mobil klassificerad applikation som tillåter användare att köpa från och sälja till andra lokalt. Du kan använda Letgo till fyndbutik eller slutligen släppa på saker som samlar damm runt ditt hus. I likhet med andra classifieds-applikationer som Wallapop eller Craigslist kommer säljare att skicka ett objekt och vänta på en köpare ...

Redaktörens val

Vanliga kodningsfel - dummies

Vanliga kodningsfel - dummies

Koden fungerar inte? Här är några vanliga misstag som kan gå upp till och med även den mest erfarna kodaren. Om din kod inte kommer att köras, försök att springa ned den här checklistan för att se om du har några av dessa fel: Har inte en slutlig HTML-tagg efter varje öppnande HTML-tagg . Saknade parentes i ...

Grundläggande kodningsordförråd - dummies

Grundläggande kodningsordförråd - dummies

Kodning har ett omfattande vokabulär som för lekmän kan verka som ogenomtränglig technobabble. Oavsett om du läser kodningsrelaterad artikel online eller pratar med en utvecklare på jobbet hörs det kanske ord som du inte har hört förut eller som har en annan mening i en kodande kontext. Här är några vanliga ordförrådsord att veta: Allmänt ...