Casa Finanza personale Flagging ios Flags in C ++ - dummies

Flagging ios Flags in C ++ - dummies

Video: GitHub Actions - Now with built-in CI/CD! Live from GitHub HQ 2024

Video: GitHub Actions - Now with built-in CI/CD! Live from GitHub HQ 2024
Anonim

Quando apri un file costruendo un'istanza ofstream o ifstream, puoi modificare il modo in cui il file si aprirà fornendo quelli che sono chiamati flag. In termini informatici, un flag è semplicemente un piccolo oggetto la cui presenza o assenza di presenza indica a una funzione come fare qualcosa. Con le classi ofstream e ifstream, la funzione in questione è il costruttore.

Un flag assomiglia a ios:: app se stai usando un compilatore che non è completamente ANSI-compatibile, o assomiglia a ios_base:: app se ne stai usando uno completamente conforme ANSI. Questo particolare flag indica che si desidera scrivere su un file, ma si desidera aggiungere a qualsiasi dato esistente che potrebbe già essere contenuto in un file. Si fornisce questo flag come argomento del costruttore per ofstream, come in uno dei seguenti esempi:

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

Si può vedere che il flag viene aggiunto come secondo parametro al costruttore. Esistono altre flag oltre all'app e puoi combinarle utilizzando l'operatore o, |. Ad esempio, un flag è ios:: nocreate (che non è incluso nei nuovi compilatori).

Questo significa "apri il file solo se già esiste. "Cioè, non creare il file se non esiste. (Ricordare che ofstream crea un file se non esiste già.) Se il file non esiste, l'apertura non riuscirà e quando si chiama fail, si otterrà un vero.

Lo ios:: nocreate flag è a portata di mano con ios:: app. Insieme, questi significano aprire un file esistente e aggiungervi . Cioè, i due insieme funzioneranno solo se il file esiste già e la chiamata aprirà il file per un'operazione di aggiunta. Se il file non esiste già, il file non verrà creato. Ecco una chiamata di esempio:

ofstream outfile ("… / MyFile. Txt", ios:: app | ios:: nocreate); if (outfile. fail ()) {cout << "non può aprire il file!" << endl; return 0;} outfile << "hi" << endl; outfile. vicino();

Se MyFile. txt non esiste quando si esegue questo codice, si ottiene il messaggio Impossibile aprire il file! Ma se MyFile. txt esiste, l'applicazione lo apre, aggiunge la stringa Hi ad esso e infine lo chiude.

Si scopre che il flag nocreate non è disponibile nella nuova libreria standard. Bummer. Pertanto, il codice funziona solo se si sta utilizzando una versione precedente della libreria. Quando si utilizza il codice: Compilatore blocchi, viene visualizzato il seguente messaggio di errore:

errore: 'nocreate' non è un membro di '; std:: ios '

Tuttavia, ti consigliamo di verificare se il tuo particolare compilatore include una libreria che supporta ios:: nocreate.Il tuo compilatore può supportarlo comunque, anche se include la nuova libreria standard. In alternativa a iOS:: nocreate, è possibile utilizzare il seguente codice (trovato nell'esempio FileOutput02):

ifstream infile ("… / MyFile. Txt"); if (infile. fail ()) {cout << "non può aprire il file!" << endl; return 0;} infile. vicino(); ofstream outfile ("… / MyFile. txt", ios:: app); file << "ciao" << endl; outfile. vicino();

In questo caso, si inizia tentando di aprire il file per la lettura. Se il file non esiste, non è possibile leggere da esso e il codice viene chiuso con un messaggio di errore. Se il codice può leggere dal file, riapre il file per la scrittura. Questa è una soluzione ingombrante, ma funziona.

Di seguito è riportato un elenco dei flag disponibili. Innanzitutto, ecco quelli per iOS, nel caso in cui si utilizzi un compilatore che non è completamente conforme ANSI:

  • ios:: app: questo flag indica che si desidera aprire un file e aggiungerlo ad esso.

  • ios:: in: Includi questo flag se vuoi leggere da un file.

  • ios:: out : Includi questo flag se vuoi scrivere su un file.

  • ios:: trunc : Includi questo flag se vuoi cancellare il contenuto del file prima di scriverci sopra. È l'opposto di append, ed è anche l'impostazione predefinita se non includi specificamente ios:: app.

  • ios:: nocreate : Usa questo flag se vuoi assicurarti che il file non venga creato se non esiste, con il risultato che il file non viene aperto.

  • ios:: noreplace : Questa bandiera è l'opposto di nocreate. Usa questo flag se vuoi solo creare un nuovo file. Se si utilizza questo flag e il file esiste già, il file non verrà aperto e tale errore restituirà true .

I compilatori ANSI-compatibili non supportano neanche ios:: flag noreplace. In questo caso, puoi usare l'opposto della correzione per il flag ios: nocreate, come mostrato qui (e trovato nell'esempio FileOutput03):

ifstream infile ("… / MyFile. Txt"); if (! infile. fail ()) {cout << "il file esiste già!" << endl; return 0;} infile. vicino(); ofstream outfile ("… / MyFile. txt"); file << "ciao" << endl; outfile. vicino();

In questo caso, il codice tenta di aprire il file per la lettura. Se il file esiste, il codice mostra un messaggio di errore ed esce. In caso contrario, il codice crea un nuovo file e lo scrive.

I seguenti flag sono disponibili in un compilatore assolutamente conforme ANSI!

  • ios:: mangiato: usa questo flag per andare alla fine del file dopo averlo aperto. Normalmente, si utilizza questo flag quando si desidera aggiungere dati al file.

  • ios_base:: binary: utilizzare questo flag per specificare che il file che si sta per aprire conserverà dati binari, ovvero dati che non rappresentano stringhe di caratteri.

  • ios_base:: in: specificare questo flag quando si desidera leggere da un file.

  • ios_base:: out: includi questo flag quando vuoi scrivere su un file.

  • ios_base:: trunc: includi questo flag se vuoi cancellare il contenuto di un file prima di scriverlo.

  • ios_base:: app: includi questo flag se vuoi aggiungerlo al file. È l'opposto di trunc - cioè, le informazioni che sono già nel file quando lo apri rimarranno lì.

Perché hai bisogno di una bandiera e una bandiera? Sembra che il computer dovrebbe sapere se stai scrivendo su un file o leggendo da esso, a seconda (rispettivamente) se usi ofstream o ifstream. La risposta al motivo per cui si dispone di una bandiera in entrata e una bandiera di uscita è che sono disponibili altre classi oltre astream e ifstream.

I compilatori che non supportano ancora completamente lo standard ANSI hanno una classe generica nelle loro librerie chiamate fstream. I compilatori ANSI-compatibili hanno nelle loro librerie una classe template chiamata basic_filebuf e una classe chiamata filebuf. Se si utilizzano queste classi, è possibile utilizzare i flag di entrata e uscita.

Flagging ios Flags in C ++ - dummies

Scelta dell'editore

Come utilizzare le funzionalità dell'app Klout su dispositivi Apple - dummies

Come utilizzare le funzionalità dell'app Klout su dispositivi Apple - dummies

L'esperienza mobile di Klout è più limitato rispetto al sito web completo. Tuttavia, molte funzionalità sono ancora disponibili con l'app per dispositivi mobili, incluso dare + K ai tuoi influenzatori, controllare il tuo punteggio Klout e apportare semplici modifiche al tuo profilo. E con l'implementazione di Klout per il tuo iPhone Passbook puoi persino usare Klout per ottenere ...

Metriche dei social media: App Android SDK di Google Analytics - dummies

Metriche dei social media: App Android SDK di Google Analytics - dummies

Tracciamento delle metriche di un'applicazione ( un'app) è stata semplificata, ma le app sono ancora isolate. Puoi tenere traccia di ogni app, ma le soluzioni sono ancora in fase di creazione per tenere traccia di tutte le app. Per andare avanti con Google Analytics SDK per la tua app Android, segui questi passaggi: Scarica l'SDK di Google Analytics per Android. Aggiungi la libreria libGoogleanalytics. jar ...

Metriche sui social media: individuazione del momento di trazione con Google+ - dummies

Metriche sui social media: individuazione del momento di trazione con Google+ - dummies

In i social media, il momento di trazione potrebbe anche essere chiamato il "miglior tempo per condividere su Google+ o altri siti sociali. "Il momento migliore per te potrebbe non essere il momento migliore per i tuoi colleghi generatori di contenuti. (Il merito di questo suggerimento principale va a Christopher Penn che per primo condivise la sua osservazione sulla ricerca ...

Scelta dell'editore

Combinazione di due foto sulla tua Nikon D3400 con sovrapposizione immagini - manichini

Combinazione di due foto sulla tua Nikon D3400 con sovrapposizione immagini - manichini

L'opzione Sovrapposizione immagini sulla Il menu di ritocco di Nikon D3400 consente di unire due foto in una. Questa opzione è stata utilizzata per combinare una foto di un lupo mannaro, mostrato a sinistra, con una scena da giardino notturno, mostrata nel mezzo. Il risultato è l'immagine spettrale mostrata a destra. Oooh, spaventoso! Su ...

Scelta di una modalità Esposizione per una Nikon DSLR - manichini

Scelta di una modalità Esposizione per una Nikon DSLR - manichini

La prima impostazione da prendere in considerazione quando si le riprese con la tua Nikon D3100, D5100 o D7000 sono la modalità di esposizione, che puoi selezionare tramite la ghiera dei modi. La tua scelta determina la quantità di controllo che hai rispetto a due impostazioni di esposizione critiche - diaframma e tempo di posa - oltre a molte altre opzioni, incluse quelle relative ...

Scelta del formato immagine JPEG per una reflex Nikon - dummies

Scelta del formato immagine JPEG per una reflex Nikon - dummies

Offerte Nikon D3100, D5100 o D7000 i due tipi di file comuni nella maggior parte delle fotocamere digitali odierne: JPEG e Camera Raw, o semplicemente Raw in breve, che passa dallo specifico moniker NEF (Nikon Electronic Format) sulle fotocamere Nikon. Il tipo di file, talvolta noto anche come formato file, determina come i dati dell'immagine ...

Scelta dell'editore

Comprensione della struttura delle classi Java - dummies

Comprensione della struttura delle classi Java - dummies

Impossibile creare un'applicazione Java senza creare una classe. Tuttavia, i modi in cui si usano le classi all'inizio quando si apprendono su di essi sono stati relativamente semplicistici - Java è in grado di avere una complessità considerevolmente maggiore, che è il punto di questo capitolo. Le classi hanno una struttura specifica. Proprio come i progetti ...

Come utilizzare i metodi astratti in Java - dummies

Come utilizzare i metodi astratti in Java - dummies

Sia le interfacce che le classi astratte hanno metodi astratti in Java. Ma i metodi astratti giocano ruoli leggermente diversi in questi due tipi di tipi di riferimento. Come puoi tenere tutto dritto nella tua mente? La prima cosa da fare è ricordare che nessuno impara a conoscere i concetti di programmazione orientata agli oggetti senza ottenere molti ...

Come utilizzare l'interfaccia CharSequence in Java - dummies

Come utilizzare l'interfaccia CharSequence in Java - dummies

L'API Java include un'interfaccia utile chiamata CharSequence. Tutte e tre queste classi - String, StringBuilder e StringBuffer - implementano questa interfaccia. Questo metodo esiste principalmente per consentire di utilizzare String, StringBuilder e StringBuffer in modo intercambiabile. A tal fine, molti dei metodi delle classi String, StringBuilder e StringBuffer utilizzano CharSequence come parametro ...