Citirea și afișarea datelor
În acest articol, vom explora metodele de citire și afișare a datelor în limbajul C++.
Tipurile de citire și afișare
Datele pot fi preluate și afișate fie prin intrarea și ieșirea standard (folosind terminalul – „de la tastatură” și „pe ecran”), fie din fișiere externe, unde citirea se face dintr-un fișier și afișarea într-un alt fișier.
Aceste metode pot fi utilizate împreună într-un mod hibrid, fiind foarte frecvent utilizate în diverse probleme de programare în care se citesc date dintr-un fișier și se afișează pe ecran.
Intrarea și ieșirea standard
Pentru a folosi intrarea și ieșirea standard (a citi "de la tastatură", respectiv a afișa "pe ecran"), vom avea nevoie de biblioteca <iostream>.
Citirea datelor se face folosind std::cin și operatorul >>, iar afișarea datelor se face folosind std::cout și operatorul <<, câteva exemple fiind regăsite mai jos.
Observație
Deși există și metode de citire și afișare din C (cum ar fi funcțiile scanf și printf), utilizarea metodelor din C++ este mult mai intuitivă și simplă.
După ce compilați programul și nu apar erori, va trebui să rulați executabilul și să introduceți datele de intrare conform descrierii problemei. Dacă totul este corect, veți obține rezultatul așteptat.
--8 < --"cppintro/io/io1.cpp"Dacă , și , programul va afișa următoarele date:
911 14
9endl vs '\n'
Ați observat probabil că pentru a introduce o linie nouă, am folosit atât
'\n' cât și endl. Deși par a fi echivalente, există
diferențe semnificative. Instrucțiunea endl nu doar că introduce o
linie nouă, dar și curăță buffer-ul (unde sunt stocate temporar datele
afișate), ceea ce o face mai lentă decât '\n'. Acest lucru devine
important atunci când lucrăm cu un volum mare de date.
Citirea și afișarea folosind fișiere
Pentru a citi și afișa din fișiere, vom avea nevoie de biblioteca <fstream>.
Mai întâi, trebuie să specificăm programului de unde să preia datele și de unde să le afișeze. Tipul ifstream declară un flux de citire din fișier, ofstream declară unul de scriere în fișier.
--8 < --"cppintro/io/io2.cpp"Numele fișierelor
Deși aici am folosit fin și fout pentru a putea menționa
aceste fluxuri (stream-uri) de date, putem folosi orice nume vrem atâta timp
cât nu avem și alte variabile numite astfel. În mod particular, putem numi
acestea chiar și cin, respectiv cout atâta timp cât nu avem
inclusă biblioteca <iostream>.
Programul de mai sus va fi identic, singura diferență fiind adăugarea facilităților care ne permit să citim datele din fișiere.
--8 < --"cppintro/io/io3.cpp"Citirea unui număr necunoscut de valori
Dacă avem de citit un număr necunoscut de valori, trebuie să folosim
structura repetitivă while, așa cum veți observa în articolul
nostru pe această
temă.
Afișarea specializată
În unele probleme, suntem nevoiți să afișăm datele respectând un oarecare format (de exemplu, să se afișeze cu exact zecimale). Pentru a opera acest lucru, este necesară cunoașterea bibliotecii <iomanip>.
Această bibliotecă poate fi folosită și pentru a prelucra datele într-o manieră mai prietenoasă cu cititorii, folosind funcțiile de lungime, aliniere sau umplere:
- lungimea:
setw(int n), numărul de caractere folosit pentru afișarea datelor; - alinierea:
left,right,internal; - caracterul de umplere:
setfill(char f), caracterele care să fie folosite pentru a umple un element afișat; - baza de numerație (
dec,oct,hex) în care sunt scrise valorile de tip întreg. În cele mai multe cazuri, nu vom avea nevoie să afișăm altfel decât în formatul zecimal.
Ne vom concentra în cele ce urmează pe funcția setprecision, fiind de departe cea mai relevantă funcție dintre cele pe care le folosim în algoritmică.
Sintaxa ei este setprecision(int n), unde este numărul de cifre folosite pentru afișarea valorilor reale; în funcție de context, poate reprezenta numărul total de cifre sau numărul de cifre de după punctul zecimal.
De exemplu, dacă vrem să afișăm primele 7 zecimale ale lui , putem face asta folosind următoarele instrucțiuni:
--8 < --"cppintro/io/io4.cpp"Observație
Fără manipulatorul fixed, setprecision controlează numărul
total de cifre. După aplicarea lui fixed, controlează doar numărul
de zecimale afişate.
Concluzii
Aceste concepte vă permit să citiți și să afișați eficient date în aplicațiile voastre. Citirea din fișiere și formatarea precisă a valorilor sunt esențiale în multe aplicații algoritmice.