logo

Intrare și ieșire de bază C++ (I/O)

Operația C++ I/O utilizează conceptul de flux. Seria de octeți sau fluxul de date este denumită flux. Accelerează performanța.

Dacă octeții sunt transferați din memoria principală pe un dispozitiv cum ar fi o imprimantă, un ecran de afișare, o conexiune la rețea etc., aceasta se numește operație de ieșire.

O operație de introducere are loc atunci când octeții trec de la un dispozitiv, cum ar fi o imprimantă, un ecran de afișare sau o conexiune de rețea, către memoria principală.

În C++, funcții predefinite iar declarațiile sunt furnizate prin fișiere antet, permițându-vă să faceți sarcini specifice fără a fi nevoie să scrieți cod nou de la început. Câteva fișiere de antet importante pentru operațiunile de intrare/ieșire în C++ includ funcții pentru efectuarea eficientă a sarcinilor de intrare și ieșire. Biblioteca standard C++, o colecție de clase și metode create în limbajul de programare C++, conține aceste fișiere antet. Să discutăm despre principalele fișiere de antet pentru operațiunile de intrare/ieșire:

Fișier antet Funcție și descriere
Este folosit pentru a defini cout, cin si cerr obiecte, care corespund fluxului de ieșire standard, fluxului de intrare standard și, respectiv, fluxului de erori standard.
Este folosit pentru a declara servicii utile pentru efectuarea de I/O formatate, cum ar fi setprecision și setw.
Este folosit pentru a declara servicii pentru procesarea fișierelor controlate de utilizator.

iostream: Este unul dintre cele mai importante fișiere de antet pentru operațiunile de intrare/ieșire în C++. Inseamna 'intrare ieșire' curent. Pentru a lucra cu diverse forme de fluxuri de intrare/ieșire, sistemul iostream fișierul antet include clasele istream (flux de intrare) și ostream (flux de ieșire) precum și clasele sale derivate ifstream, ofstream , și stringstream . Cele mai utilizate clase ale acestui fișier antet sunt cin (intrare standard) și cout (ieșire standard) , care vă permit să citiți intrarea utilizatorului și să afișați ieșirea pe consolă. De exemplu:

 #include using namespace std; int main() { int num; cout <> num; cout << 'You entered: ' << num << endl; return 0; } 

Ieșire

 Enter a number: 42 You entered: 42 

iomanip: Acest fișier antet reprezintă „manipulare intrare-ieșire” . Oferă instrumente de formatare intrare și ieșire . Vă permite să modificați aliniere, lățime, precizie și alte caracteristici de formatare ale intrării și ieșirii. Setw, setprecision, fix, stânga, dreapta , și alte funcții utilizate în mod regulat sunt enumerate mai jos. Este deosebit de util pentru prezentarea datelor într-un anumit mod.

Exemplu:

 #include #include using namespace std; int main() { double pi = 3.14159; cout << fixed << setprecision(2) << 'Value of pi: ' << pi << endl; return 0; } 

Ieșire

unire șir de caractere java
 Value of pi: 3.14 

curent: Fișierul antet pentru operațiunile de intrare/ieșire a fișierelor este apelat fstream . Acesta cuprinde clase pentru citirea și scrierea în fișiere ifstream (flux fișier de intrare) și ofstream (flux fișier de ieșire) . Sistemul folosește aceste clase pentru a deschide fișiere numai pentru citire și numai pentru scriere.

Exemplu:

 #include #include using namespace std; int main() { ofstream outputFile('output.txt'); if (outputFile.is_open()) { outputFile << 'Hello, File I/O!'; outputFile.close(); cout << 'File is written successfully.' << endl; } else { cout << 'Failed to open the file.' << endl; } return 0; } 

Ieșire

 The file was written successfully. 

Aceste fișiere de antet sunt printre cele mai importante pentru sarcinile de intrare/ieșire C++. Fiecare are un scop specific și oferă instrumentele necesare pentru a gestiona cu succes sarcinile care implică intrări și ieșiri, fie că interacționează cu consolă, formatarea ieșirii , sau lucrul cu fișiere.

În C++, folosim frecvent 'folosind namespace std;' după fișierele antet. The namespace std; declarația este frecvent utilizată în C++ pentru a simplifica codul atunci când lucrați cu componente standard ale bibliotecii. Să examinăm mai detaliat funcția și aplicarea acestei declarații:

A spatiu de nume este o tehnică de grupare a identificatorilor similari (cum ar fi clase, funcții , și variabile ) pentru a preveni conflictele de denumire. Biblioteca standard C++ oferă părțile sale (cum ar fi cin, cout etc.) sub spațiul de nume std.

Termenul 'standard' este scurtat la 'std' , iar toate elementele bibliotecii standard sunt conținute în ea. Procedând astfel, conflictele de nume cu identificatorii configurați în codul dvs. sunt reduse.

Acum să vorbim despre motivul pentru care se utilizează namespace std; se folosește declarația:

Fără a utiliza namespace std:

 #include int main() { std::cout << 'Hello, world!' << std::endl; return 0; } With using namespace std: #include using namespace std; int main() { cout << 'Hello, world!' << endl; return 0; } 

După cum puteți vedea, folosind namespace std; declarația vă permite să omiteți std:: prefix la accesarea componentelor bibliotecii standard. Vă face codul mai scurt și mai lizibil, deoarece nu trebuie să repetați std:: înaintea fiecărui identificator standard de bibliotecă.

Fișiere antet bibliotecă I/O

Flux de ieșire standard (cout):

Obiectul cout este un obiect predefinit de clasă ostream. Este conectat la dispozitivul de ieșire standard, care este de obicei un ecran de afișare. Cout este utilizat în combinație cu operatorul de inserare a fluxului (<<) to show the output on a console< p>

Să vedem exemplul simplu de flux de ieșire standard (cout):

 #include using namespace std; int main( ) { char ary[] = &apos;Welcome to C++ tutorial&apos;; cout &lt;&lt; &apos;Value of ary is: &apos; &lt;&lt; ary &lt;&lt; endl; } 

Ieșire

 Value of ary is: Welcome to C++ tutorial 

Flux de intrare standard (cin)

The mâncând este un obiect predefinit al curent clasă. Este conectat la dispozitivul de intrare standard, care este de obicei o tastatură. Cin este folosit împreună cu operatorul de extracție a fluxului (>>) pentru a citi intrarea de la o consolă.

Să vedem exemplul simplu de flux de intrare standard (cin):

 #include using namespace std; int main( ) { int age; cout &lt;&gt; age; cout &lt;&lt; &apos;Your age is: &apos; &lt;&lt; age &lt;&lt; endl; } 

Ieșire

 Enter your age: 22 Your age is: 22 

Linie finală standard (endl)

The endl este un obiect predefinit al inamicul nostru clasă. Este folosit pentru a introduce o nouă linie de caractere și pentru a elimina fluxul.

Să vedem exemplul simplu de linie finală standard (endl):

 #include using namespace std; int main( ) { cout &lt;&lt; &apos;C++ Tutorial&apos;; cout &lt;&lt; &apos; Javatpoint&apos;&lt;<endl; cout << 'end of line'<<endl; } < pre> <p> <strong>Output</strong> </p> <pre> C++ Tutorial Javatpoint End of line </pre> <h3>Un-buffered standard error stream (cerr):</h3> <p> <strong> <em>cerr</em> </strong> stands for <strong> <em>&apos;standard error&apos;</em> .</strong> </p> <p>It is an unbuffered stream, meaning that output sent to <strong> <em>cerr</em> </strong> is immediately displayed on the console without buffering.</p> <p>It is typically used for displaying error messages and diagnostic information, which need to be displayed immediately to avoid delays caused by buffering.</p> <p> <strong>Example: using cerr:</strong> </p> <pre> #include int main() { std::cerr &lt;&lt; &apos;This is an error message.&apos; &lt;&lt; std::endl; return 0; } </pre> <p> <strong>Output</strong> </p> <pre> This is an error message. </pre> <h3>buffered standard error stream (clog):</h3> <p>clog stands for <strong> <em>&apos;standard log&apos;</em> </strong> . It is a buffered stream, similar to cout. It&apos;s often used for writing informational or diagnostic messages that are less time-sensitive than errors. The use of buffering can improve performance when displaying a large number of messages.</p> <p> <strong>Example: using clog</strong> </p> <pre> #include int main() { std::clog &lt;&lt; &apos;This is an informational message.&apos; &lt;&lt; std::endl; return 0; } </pre> <p> <strong>Output</strong> </p> <pre> This is an informational message. </pre> <p>In both examples, the output will appear on the console. However, the main difference between <strong> <em>cerr</em> </strong> and <strong> <em>clog</em> </strong> lies in their buffering behavior. Due to its unbuffered nature, messages given to <strong> <em>cerr</em> </strong> are displayed right away, but messages sent to clog may be buffered for greater speed. However, they will still eventually appear on the console.</p> <h4>Note: It is important to remember that the type of message you wish to display will determine whether you use cerr or clog. Use cerr for essential messages that need immediate attention (like error messages) and use clog for less critical diagnostic or informational messages that can be buffered for better performance.</h4> <hr></endl;>

Flux de erori standard fără tampon (cerr):

cerr reprezintă 'eroare standard' .

Este un flux fără tampon, adică acea ieșire trimisă către cerr este afișat imediat pe consolă fără tamponare.

De obicei, este folosit pentru afișarea mesajelor de eroare și a informațiilor de diagnosticare, care trebuie afișate imediat pentru a evita întârzierile cauzate de tamponare.

Exemplu: folosind cerr:

 #include int main() { std::cerr &lt;&lt; &apos;This is an error message.&apos; &lt;&lt; std::endl; return 0; } 

Ieșire

 This is an error message. 

flux de erori standard tamponat (înfundare):

sabot reprezintă „jurnal standard” . Este un flux tamponat, similar cu cout. Este adesea folosit pentru a scrie mesaje informative sau de diagnosticare care sunt mai puțin sensibile la timp decât erorile. Utilizarea tamponării poate îmbunătăți performanța atunci când se afișează un număr mare de mesaje.

Exemplu: folosirea sabotului

 #include int main() { std::clog &lt;&lt; &apos;This is an informational message.&apos; &lt;&lt; std::endl; return 0; } 

Ieșire

 This is an informational message. 

În ambele exemple, rezultatul va apărea pe consolă. Cu toate acestea, principala diferență între cerr și sabot constă în comportamentul lor tampon. Datorită naturii sale fără tampon, mesajele date către cerr sunt afișate imediat, dar mesajele trimise la înfundare pot fi stocate în tampon pentru o viteză mai mare. Cu toate acestea, ele vor apărea în cele din urmă pe consolă.

Notă: Este important să rețineți că tipul de mesaj pe care doriți să-l afișați va determina dacă utilizați cerr sau clog. Utilizați cerr pentru mesajele esențiale care necesită atenție imediată (cum ar fi mesajele de eroare) și utilizați clog pentru mesaje de diagnosticare sau informaționale mai puțin critice care pot fi stocate în tampon pentru o performanță mai bună.