logo

Entrada i sortida bàsiques de C++ (E/S)

L'operació d'E/S de C++ utilitza el concepte de flux. La sèrie de bytes o flux de dades es coneix com a flux. Accelera el rendiment.

Si es transfereixen bytes de la memòria principal a un dispositiu com una impressora, una pantalla, una connexió de xarxa, etc., això s'anomena operació de sortida.

Una operació d'entrada es produeix quan els bytes flueixen des d'un dispositiu com una impressora, una pantalla o una connexió de xarxa a la memòria principal.

En C++, funcions predefinides i les declaracions es proporcionen mitjançant fitxers de capçalera, cosa que us permet fer tasques específiques sense haver d'escriure codi nou des del principi. Alguns fitxers de capçalera importants per a operacions d'entrada/sortida en C++ inclouen funcions per dur a terme de manera eficaç les tasques d'entrada i sortida. La biblioteca estàndard de C++, una col·lecció de classes i mètodes creats en el llenguatge de programació C++, conté aquests fitxers de capçalera. Parlem dels fitxers de capçalera principals per a les operacions d'entrada/sortida:

Fitxer de capçalera Funció i descripció
S'utilitza per definir el cout, cin i cerr objectes, que corresponen al flux de sortida estàndard, el flux d'entrada estàndard i el flux d'error estàndard, respectivament.
S'utilitza per declarar serveis útils per dur a terme E/S formatades, com ara setprecision i setw.
S'utilitza per declarar serveis per al processament de fitxers controlat per l'usuari.

iostream: És un dels fitxers de capçalera més importants per a les operacions d'entrada/sortida en C++. Significa 'd'entrada i sortida' corrent. Per treballar amb diverses formes de fluxos d'entrada/sortida, el iostream El fitxer de capçalera inclou les classes istream (flux d'entrada) i ostream (flux de sortida) així com les seves classes derivades si corrent, de corrent , i corrent de corda . Les classes més utilitzades d'aquest fitxer de capçalera són cin (entrada estàndard) i cout (sortida estàndard) , que us permeten llegir l'entrada de l'usuari i mostrar la sortida a la consola. Per exemple:

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

Sortida

 Enter a number: 42 You entered: 42 

iomanip: Aquest fitxer de capçalera significa 'manipulació d'entrada-sortida' . Proporciona eines per formatar entrada i sortida . Et permet modificar el alineació, amplada, precisió , i altres característiques de format de l'entrada i sortida. Setw, setprecision, fix, esquerra, dreta , i altres funcions que s'utilitzen habitualment s'enumeren a continuació. És especialment útil per presentar dades d'una determinada manera.

Exemple:

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

Sortida

travessa en ordre de l'arbre binari
 Value of pi: 3.14 

corrent: S'anomena el fitxer de capçalera per a les operacions d'entrada/sortida de fitxers fstream . Comprèn classes per llegir i escriure en fitxers ifstream (seqüència de fitxers d'entrada) i ofstream (seqüència de fitxers de sortida) . El sistema utilitza aquestes classes per obrir fitxers de només lectura i només d'escriptura.

Exemple:

 #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; } 

Sortida

 The file was written successfully. 

Aquests fitxers de capçalera es troben entre els més crucials per a les tasques d'entrada/sortida de C++. Cadascun té un propòsit específic i ofereix les eines necessàries per gestionar amb èxit les tasques d'entrada i sortida, tant si es tracta d'interaccionar amb el consola, format de sortida , o treballant amb fitxers.

En C++, fem servir sovint 'utilitzant l'espai de noms std;' després dels fitxers de capçalera. El namespace std; La declaració s'utilitza amb freqüència en C++ per racionalitzar el codi quan es treballa amb components de biblioteca estàndard. Examinem la funció i l'aplicació d'aquesta declaració amb més detall:

A espai de noms és una tècnica per agrupar identificadors similars (com ara classes, funcions , i les variables ) per evitar conflictes de noms. La biblioteca estàndard de C++ proporciona les seves parts (com ara cin, cout, etc.) sota l'espai de noms std.

El terme 'estàndard' s'escurça a 'std' , i tots els elements de la biblioteca estàndard hi estan continguts. En fer això, es redueixen els conflictes de noms amb els identificadors configurats al vostre codi.

Ara parlem de per què l'ús de l'espai de noms std; s'utilitza la declaració:

Sense utilitzar 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; } 

Com podeu veure, utilitzant el namespace std; declaració us permet ometre std:: prefix en accedir als components estàndard de la biblioteca. Fa que el vostre codi sigui més curt i més llegible, ja que no heu de repetir std:: abans de cada identificador de biblioteca estàndard.

Fitxers de capçalera de la biblioteca d'E/S

Flux de sortida estàndard (cout):

L'objecte cout és un objecte predefinit de classe ostream. Està connectat al dispositiu de sortida estàndard, que sol ser una pantalla de visualització. El cout s'utilitza en combinació amb l'operador d'inserció de flux (<<) to show the output on a console< p>

Vegem un exemple senzill d'un flux de sortida estàndard (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; } 

Sortida

 Value of ary is: Welcome to C++ tutorial 

Flux d'entrada estàndard (cin)

El menjant és un objecte predefinit de corrent classe. Està connectat amb el dispositiu d'entrada estàndard, que sol ser un teclat. El cin s'utilitza conjuntament amb l'operador d'extracció de flux (>>) per llegir l'entrada des d'una consola.

Vegem un exemple senzill de flux d'entrada estàndard (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; } 

Sortida

 Enter your age: 22 Your age is: 22 

Línia final estàndard (endl)

El endl és un objecte predefinit de el nostre enemic classe. S'utilitza per inserir una nova línia de caràcters i buida el flux.

Vegem un exemple senzill de línia final estàndard (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 d'error estàndard sense memòria intermèdia (cerr):

cerr significa 'error comú' .

És un flux sense memòria intermèdia, és a dir, la sortida enviada a cerr es mostra immediatament a la consola sense emmagatzemar la memòria intermèdia.

Normalment s'utilitza per mostrar missatges d'error i informació de diagnòstic, que s'han de mostrar immediatament per evitar retards causats per la memòria intermèdia.

Exemple: utilitzant cerr:

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

Sortida

 This is an error message. 

flux d'error estàndard a la memòria intermèdia (obstrucció):

esclop representa 'registre estàndard' . És un corrent tamponat, semblant al cout. Sovint s'utilitza per escriure missatges informatius o de diagnòstic que són menys sensibles al temps que els errors. L'ús de la memòria intermèdia pot millorar el rendiment quan es mostren un gran nombre de missatges.

Exemple: ús d'esclops

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

Sortida

 This is an informational message. 

En ambdós exemples, la sortida apareixerà a la consola. No obstant això, la diferència principal entre cerr i obstruir rau en el seu comportament amortidor. A causa de la seva naturalesa sense búfer, els missatges donats a cerr es mostren immediatament, però és possible que els missatges enviats a l'obturació s'emmagatzemin per a una major velocitat. Tanmateix, encara apareixeran a la consola.

Nota: És important recordar que el tipus de missatge que voleu mostrar determinarà si feu servir cerr o clog. Utilitzeu cerr per als missatges essencials que necessiten atenció immediata (com els missatges d'error) i utilitzeu clog per a missatges informatius o de diagnòstic menys crítics que es puguin emmagatzemar per obtenir un millor rendiment.