100din100

Citirea si Afisarea in fisiere in C++ - Tutorial Incepatori

Publicat la 13 iulie 2020 · olimpiada clasa 9 cpp


De ce citirea din fişier?

De multe ori este necesară citirea şi afişarea în fişier, unul din motive fiind faptul că nu trebuie să reintroducem datele de intrare de fiecare dată când rulăm programul.

Cuprinsul lecției

Fluxuri de date

Înainte să trecem la citirea şi afişarea din fişier, poate fi util să cunoaştem un pic partea teoretică a fluxurilor de date.

Fluxurile de date (sau stream uri) din C++ sunt responsabile pentru input şi output (intrare/ieşire), adică pentru citire şi pentru scriere.

Când citim şi scriem în consolă, folosim cin şi cout (Console In şi Console Out), care sunt fluxuri standard – de aceea sunt numite şi stdin şi stdout (standard input şi standard output).

De reținut! La fel cum în consolă, când introducem date, le separăm cu spații sau cu enter, aşa trebuie şi în fişiere separate datele.


Citirea şi scrierea din fişiere

Pentru a citi şi a scrie în fişiere, avem nevoie de un flux de date pentru fişiere – de aceea folosim biblioteca intuitiv numită <fstream> (File Stream)

Acum putem să ne creem fluxurile de date din fişiere! În general, declararea stream urilor are următoarea structură:


tipStream numeStream(dateStream);


Pentru citirea din fişier, avem nevoie de un Input File Stream (flux de citire din fişier) – adică tipStream va fi defapt ifstream. Vom reveni la numeStream un pic mai târziu. La dateStream vom scrie, între ghilimele, numele fişierului, cu tot cu extensia. De obicei, fişierul de intrare are extensia .in pentru a fi diferențiat de cel de ieşire.


Pentru afişare, vom folosi ofstream (Output File Stream). dateStream va fi, la fel, numele fişierului în care vom scrie. De obicei, fişierele de ieşire au extensia .out.


Este bine ca numele celor două fluxuri să fie apropiat – spre exemplu, mulți folosesc f şi g (litere consecutive în alfabet), alții folosesc filein şi fileout. Depinde de tine cum vrei să numeşti fişierele.


Citirea din fişier

#include <iostream>
#include <fstream>
//folosim biblioteca fstream pentru citirea şi scrierea în fişier//pentru mai multe detalii: https://100din100.netlify.app
using namespace std;

int main()
{
	ifstream f("nume_fisier.in"); //numiți cum vreți fişierul.//pentru mai multe detalii: https://100din100.netlify.app
	//Vom citi n şi n numere din fişier, în timp ce le afişăm pe ecran.//pentru mai multe detalii: https://100din100.netlify.app
	int n, x;
	f>>n;
	for(int i = 1; i <= n; i++) {
		f>>x;
		cout<<x<<endl;
	}
}

Afişarea în fişier

#include <iostream>
#include <fstream>
//folosim biblioteca fstream pentru citirea şi scrierea în fişier//pentru mai multe detalii: https://100din100.netlify.app
using namespace std;

int main()
{
	ofstream g("nume_fisier.in"); //numiți cum vreți fişierul.//pentru mai multe detalii: https://100din100.netlify.app
	//Vom citi n şi n numere de la consolă, în timp ce le afişăm în fişier.//pentru mai multe detalii: https://100din100.netlify.app
	int n, x;
	cin>>n;
	for(int i = 1; i <= n; i++) {
		cin>>x;
		g<<x<<endl;
	}
}

Citirea şi afişarea

#include <iostream>
#include <fstream>
//folosim biblioteca fstream pentru citirea şi scrierea în fişier//pentru mai multe detalii: https://100din100.netlify.app
using namespace std;

int main()
{
	ifstream f("nume_fisier.in"); //numiți cum vreți fişierul.//pentru mai multe detalii: https://100din100.netlify.app
	ofstream g("nume_fisier.out");
	//Vom citi n şi n numere din fişierul de intrare, în timp ce le afişăm în fişierul de ieşire.//pentru mai multe detalii: https://100din100.netlify.app
	int n, x;
	f>>n;
	for(int i = 1; i <= n; i++) {
		f>>x;
		g<<x<<endl;
	}
}

În cazul în care nu ați creat fişierele, acestea se vor creea automat, şi vor fi goale inițial:



Introducem datele de intrare în fişierul de intrare şi putem să ne testăm programul!


Test din citire si afisare

Completează următoarea secvență de cod:

//numeşte intuitiv fluxul de ieşire
ifstream filein("ceva.in");
ofstream ("ceva.out");
· Vezi răspunsul

//pentru mai multe detalii: https://100din100.netlify.app

Răspunde la următoarea întrebare:

Fluxul de intrare fişier se numeşte .
· Vezi răspunsul

Alte resurse

Tutoriale-Pe.net

Alte articole

Primul tau program, variabile si operatii - TUTORIAL COMPLET C++

Eşti elev de liceu şi nu înțelegi informatica? Acest clip ar trebui să te ajute să înțelegi cele mai elementare aspecte privind informatica de liceu - algoritmica...

Rezolvări probleme PbInfo

Problemele de informatică pot fi dificile uneori, şi este util să vedem o soluție bună pentru a ne autoverifica. De multe ori sunt necesare doar nişte modificări minore, de aceea este bine să analizăm soluțiile bune cu atenție!

Video - Probleme Rezolvate PbInfo

Aici gasiti rezolvarea mai multor probleme de pe site-ul pbinfo.ro, în format video, pe canalul nostru de YouTube.

Primul program - Operatori si expresii - Tutorial incepatori C++

Alcătuirea unui program pentru rezolvarea unei probleme se rezumă defapt la rezolvarea unor probleme mai mici. Spre exemplu, pentru a afla suma numerelor prime dintr-un şir, trebuie să ştim cum …

Sume partiale. Suma elementelor dintr-o submatrice in C++

Cu ce ne ajută sumele parțiale? Unele probleme cer aflarea sumei elementelor unei secvențe dintr-un şir dat. Metoda naivă, care face suma tuturor elementelor din secvența cerută, deobicei n…

Cautarea binara pentru olimpiada in C++

Ce este căutarea binară? Să zicem că ai un vector a[] cu n elemente crescătoare. Căutarea binară este un algoritm eficient care determină dacă orice număr x apare sau n…

Prelucrarea cifrelor unui numar pentru incepatori in C++

Acest articol urmăreşte aplicarea diferitelor aplicații cu cifrele unui număr: suma cifrelor, numărul de cifre, oglinditul unui număr ş.a.m.d. Puteți găsi multe probleme care cer prelucrarea cif…

Afişare cu 2 zecimale exacte, fără şi cu rotunjire - TUTORIAL C++

Tutorialul acesta te învață cum să afişezi un număr real cu mai multe zecimale exacte. Multe probleme cer...

Algoritmi elementari - video

Tutoriale uşor de urmărit, sub forma unor videoclipuri!

Ciurul lui eratostene - generarea numerelor prime - olimpiada C++

Să zicem că vrem să aflăm dacă mai multe numere sunt sau nu prime. Desigur, putem aplica algoritmul de aflare a numărului de divizori pentru toate numerele, doar că dacă avem foarte multe şi sun…

Sortarea vectorilor si a structurilor (pentru incepatori) in C++

Sortarea în informatică reprezintă procesul de a ordona un şir de obiecte (numere, caractere, sau chiar şiruri) după un anumit criteriu. Spre exemplu, putem ordona crescător sau descrescăto…

Verifica daca un an este bisect in C++

Dându-se un an, trebuie verificat dacă este un an bisect sau nu. Exemplu:Intrare 2021 Ieşire NU Definiția anului bisect Deşi pare evident, anii bis…

Divizorii unui numar - tutorial incepatori in C++

Prezentul articol te va ajuta să îndeplineşti diferite aplicații cu divizorii unui număr. Trebuie cunoscută parcurgerea divizorilor unui număr, înainte de toate, ca să ne asigurăm că ştim s…

Verifica daca o data este valida in C++

Dându-se o dată (zi lună an), trebuie verificat dacă data este validă sau nu. Exemplu:Intrare zi = 3, luna = 4, an = 2021 Ieşire DA Pentru a verifica da…

Al doilea cel mai mic/mare element al unui sir in C++

Dându-se un şir de numere naturale distincte, aflați al doilea cel mai mic număr din şir. Exemplu:Intrare 9 5 8 2 4 Ieşire 4 Explicație4 este al doilea cel mai mi…

Vectori caracteristici si vectori de frecventa - Materie Olimpiada Informatica C++

Ce este un vector de frecvență sau un vector caracteristic? Vectorii caracteristici rețin dacă un element se află într-un vector sau nu. Similar, vectorii de frecvență rețin numărul de apar…

Ce este coada/queue si cum functioneaza? Tutorial clasa a 10-a

Ce este coada? Coada (Queue din engleză) este o structură de date liniară care funcționează prin inserarea elementelor noi la spate şi prin eliminarea elementelor doar prin față. Altfel spu…

Creeaza un joc 2D in PYTHON pentru incepatori - Capitolul 0 (Instalare)

Care-i faza? În aceste câteva tutoriale vom învăța cum să îți creezi propriul joc video în Python. Puteți viziona atât pe YouTube, cât şi în format text pe site-ul nostru (aici adică). …

Ridicarea la putere in timp logaritmic pentru olimpiada in C++

Un număr de forma b la puterea e nu poate fi calculat precum celelalte operații (adunarea, scăderea, înmulțirea, împărțirea) pur şi simplu. În articolul acesta vom prezenta un mod foarte …

Tablelul ASCII - clasa a X-a - char C++

Ce este tabelul ASCII? Calculatorul reține numere (valori de 1 şi de 0), aşadar a fost nevoie de o corespondență între numere şi caractere pentru a putea reprezenta litere, si…

Parcurgerea matricei in spirala in C++

Cu ce ne ajută parcurgerea matricei pătratice în spirală? În concursuri şi olimpiade apar probleme legate de parcurgerea matricei în spirală. Deşi ideea de bază este destul de uşoară, algor…

Smenul lui Mars (Difference Arrays) in C++

Ce este Şmenul lui Mars? Să zicem că avem un şir a[] cu n elemente. Unele probleme cer efectuarea unor operații de tipul sum(st, dr, val), cu semnificația că adunăm la …

Tipuri de date in C++ si C - Tutorial Incepatori

De ce avem nevoie de date? În timp ce lucrăm cu valori, avem nevoie (uneori chiar suntem siliți!) să memorăm datele undeva, în memorie. Prin intermediul variabilelor putem accesa o zonă de …

Citirea si Afisarea in fisiere in C++ - Tutorial Incepatori

De ce citirea din fişier? De multe ori este necesară citirea şi afişarea în fişier, unul din motive fiind faptul că nu trebuie să reintroducem datele de intrare de fiecare dată când rulăm p…

Învață să programezi gratis!

Am lansat InfoAs, o platformă de informatică cu sute de probleme, lecții și concursuri, totul gratuit. Încearcă acum!