Acasă Finanțe personale Manipularea erorilor în C ++ la deschiderea unui fișier - dummies

Manipularea erorilor în C ++ la deschiderea unui fișier - dummies

Video: Linux Tutorial for Beginners: Introduction to Linux Operating System 2024

Video: Linux Tutorial for Beginners: Introduction to Linux Operating System 2024
Anonim

Când deschideți un fișier, tot felul de lucruri pot merge prost. Un fișier trăiește pe un dispozitiv fizic - un disc fix, de exemplu, sau poate pe o unitate flash sau o cartelă SD - și puteți întâmpina probleme când lucrați cu dispozitive fizice.

De exemplu, o parte din disc ar putea fi deteriorată, cauzând coruperea unui fișier existent. Sau, mai puțin dezastruos, s-ar putea să nu mai aveți spațiu pe disc. Sau chiar mai puțin dezastruos, puteți încerca să deschideți un fișier într-un director care nu există.

Dacă încercați să deschideți un fișier pentru scriere specificând o cale completă și un nume de fișier, dar directorul nu există, calculatorul răspunde diferit, în funcție de sistemul de operare pe care îl utilizați. Dacă nu sunteți sigur ce va răspunde sistemul dvs. de operare, încercați să scrieți o aplicație simplă de testare care încearcă să creeze și să deschidă ceva de genul / abc / def / ghi / jkl / abc. txt. (Desigur, veți dori să folosiți un director care nu există.)

Apoi se va întâmpla una din două lucruri: Fie directorul, fie fișierul vor fi create, sau nu se va întâmpla nimic.

De exemplu, pe un sistem Windows, dacă încercăm să creăm un fișier într-un director care nu există, sistemul nu creează directorul. Asta pentru că adânc în interior, aplicația solicită în cele din urmă o funcție de sistem de operare care face munca murdară de a crea fișierul. Și această funcție particulară a sistemului de operare (se numește CreateFile (), dacă chiar îți pasă) are o regulă care nu va crea un director pentru tine.

Dacă doriți să determinați dacă clasa ostream nu a putut să creeze un fișier, puteți apela funcția membrilor fail (). Această funcție returnează adevărat dacă obiectul nu a putut crea fișierul. Și asta se întâmplă când un director nu există. Exemplul prezentat de DirectoryCheck01 demonstrează un exemplu de acest lucru.

#include #include folosind namespace std; int main () {outstream outfile ("/ abc / def / ghi / MyFile.txt"); dacă (outfile. fail ()) {cout << "nu a putut deschide fișierul!" << endl; retur 0;} outfile << "hi" << endl; outfile. închide(); return 0;}

Când executați acest cod, presupunând că nu aveți un director numit / abc / def / ghi în sistemul dvs., ar trebui să vedeți mesajul Nu a putut fi deschis fișierul! Presupunând că sistemul dvs. de operare nu creează un director în acest caz; în caz contrar, calculatorul vă va deschide fișierul, va scrie Salut și va continua viața fericită după ce a închis lucrurile.

Ca alternativă la apelarea funcției membru fail (), puteți utiliza un operator disponibil în diferite clase de flux. Aceasta este!, numit în mod fericit ca operatorul "bang", și l-ați folosi în loc de a apela fail (), ca în acest cod:

dacă (!outfile) {cout << "nu a putut deschide fișierul!" << endl; retur 0;}

Majoritatea oamenilor preferă să folosească! outfile în loc de outfile. fail (), deși! outfile face cod confuz. Motivul este că outfile-ul este un obiect și noțiunea de! outfile pur și simplu nu are sens.

De fapt,! outfile excursii până mulți programatori începători. Ei știu că outfile nu este un pointer în acest cod exemplu, și ei se întreabă cum ai putea să-l testezi împotriva 0, așa cum în mod normal poți face doar cu un pointer. (Amintiți-vă, spunând! X, unde x este un pointer, testați x împotriva 0.) Și asta pur și simplu nu are sens! Și astfel, pentru a evita confuzia, doar apelul eșuează (). E mai logic.

Iată câteva motive pentru care crearea fișierelor dvs. poate sufoca:

  • Directorul nu există.

  • Nu mai aveți spațiu pe disc și aveți noroc.

  • Aplicația dvs. nu are permisiunile potrivite pentru a crea un fișier.

  • Numele fișierului a fost nevalid - adică conținea caractere pe care sistemul de operare nu le permite să se înscrie într-un nume de fișier, cum ar fi * sau?.

Ca orice aplicație bună, aplicația dvs. ar trebui să facă două lucruri:

  1. 1. Verificați dacă a reușit crearea unui fișier.

  2. 2. Dacă crearea fișierului a eșuat, procedați corespunzător.

    Nu imprimați doar un mesaj oribil cum ar fi Oops! Abandonarea!, lăsând utilizatorilor dvs. săraci să nu aibă altă posibilitate decât să arunce monitorul pe podea. În schimb, faceți ceva mai prietenos - cum ar fi prezentarea unui mesaj spunându-le că există o problemă și sugerând că ar putea elibera mai mult spațiu pe disc.

Manipularea erorilor în C ++ la deschiderea unui fișier - dummies

Alegerea editorilor

Cum să faci aritmetică de bază în R-dummies

Cum să faci aritmetică de bază în R-dummies

De operatori aritmetici, astfel încât să puteți utiliza R ca un calculator fantezie dacă apare necesitatea. Cum se utilizează operatorii de bază în R Majoritatea operatorilor aritmetici de bază sunt foarte familiarizați cu programatorii (și cu oricine altcineva care a studiat matematica în școală). Descrierea operatorului ...

Cum se extrage un subset al unui vector în R - dummies

Cum se extrage un subset al unui vector în R - dummies

Utilizați aceleași reguli de indexare pentru vectorii de caractere pe care îl utilizați pentru vectorii numerici (sau pentru vectori de orice tip). Procesul de trimitere la un subset al unui vector prin indexarea elementelor sale se numește și subsetare. Cu alte cuvinte, subsetarea este procesul de extragere a unui subset al unui vector. Pentru a ilustra ...

Cum se face matricea aritmetică în R-dummies

Cum se face matricea aritmetică în R-dummies

ÎN afară de operatorii aritmetici clasici, R conține un set mare de operatori și funcții pentru a efectua un set larg de operații matrice. Multe dintre aceste operațiuni sunt folosite în matematică avansată, astfel încât este posibil să nu aveți nevoie de ele. Unele dintre ele pot veni destul de la îndemână, deși, dacă aveți nevoie să răsturnați datele sau ...

Alegerea editorilor

Top 10 Dificultăți în practica de înțelegere și cum să le depășești - manechine

Top 10 Dificultăți în practica de înțelegere și cum să le depășești - manechine

De practici, mindfulness nevoie de timp pentru a învăța, a înțelege și a încorpora într-o rutină zilnică. Ca și în orice altceva, va avea parte de dificultăți, dar toate pot fi depășite. Găsirea timpului pentru o practică formală de conștientizare Unul dintre cele mai dificile lucruri despre practica de conștientizare este găsirea timpului ...

Depășirea distanței de comunicare cu copiii dvs. autism

Depășirea distanței de comunicare cu copiii dvs. autism

Deficitele de limbă și de comunicare sunt de obicei cele mai grave și aspecte stresante ale autismului. Comunicarea cu succes este o provocare majoră cu care se confruntă multe persoane cu autism. Capacitatea lor de a comunica dramatic afectează cât de bine interacționează social într-o lume non-autistă. Mulți oameni cu autism nu au capacitatea de a cere chiar și un pahar de apă sau ...

Benzodiazepinele și tratamentul tulburărilor bipolare - manechine

Benzodiazepinele și tratamentul tulburărilor bipolare - manechine

Cele mai frecvent utilizate medicamente pur antianchetă utilizate în tratamentul tulburarea bipolară sunt benzodiazepinele (cunoscute și sub numele de anxiolitice sau tranchilizante sau benzos pe scurt). Aceste medicamente încetinesc întregul sistem nervos, reducând astfel agitația și nivelurile de anxietate, ambele putând fi probleme în tulburarea bipolară. Benzoazele par să afecteze un creier ...

Alegerea editorilor

Navigați în Adobe Acrobat Creative Suite 5

Navigați în Adobe Acrobat Creative Suite 5

Acrobat CS5 oferă o varietate de panouri care sunt utile atunci când navigați prin documente PDF. Panourile de navigare sunt afișate în partea stângă a ferestrei Document ca mici pictograme. Faceți clic pe o pictogramă pentru a face panoul său vizibil. De exemplu, dați clic pe pictograma Pagini pentru a afișa reprezentările de dimensiuni miniatură pentru fiecare pagină. În paginile ...

Restricționa Cine poate edita sau imprima documente PDF - dummies

Restricționa Cine poate edita sau imprima documente PDF - dummies

Adobe Acrobat Creative Suite 5 cu capacitatea de a restricționa cine poate edita sau imprima documentele PDF pe care le distribuiți. Urmați acești pași:

Ecran Prindeți o secțiune a unui fișier PDF - dummies

Ecran Prindeți o secțiune a unui fișier PDF - dummies

Puteți utiliza instrumentul Snapshot în Adobe Acrobat CS5 pentru a selecta textul și imaginile și a crea o imagine a unei anumite zone dintr-un fișier PDF. Rezultatul este denumit în mod obișnuit ca o apucare pe ecran a unei secțiuni dintr-un fișier PDF. Rezultatul este o imagine și textul dvs. nu este ...