logo

C++ osnovni ulaz i izlaz (I/O)

C++ I/O operacija koristi koncept toka. Niz bajtova ili tok podataka naziva se tok. Ubrzava performanse.

Ako se bajtovi prenose iz glavne memorije u uređaj poput pisača, zaslona, ​​mrežne veze itd., to se naziva izlazna operacija.

Operacija unosa događa se kada bajtovi teku od uređaja poput pisača, zaslona ili mrežne veze do glavne memorije.

U C++, unaprijed definirane funkcije a deklaracije se daju kroz datoteke zaglavlja, omogućujući vam da radite određene zadatke bez potrebe za pisanjem novog koda od samog početka. Nekoliko važnih datoteka zaglavlja za ulazno/izlazne operacije u C++ uključuju funkcije za učinkovito izvršavanje ulaznih i izlaznih zadataka. Standardna biblioteka C++, zbirka klasa i metoda stvorenih u programskom jeziku C++, sadrži ove datoteke zaglavlja. Razmotrimo glavne datoteke zaglavlja za ulazno/izlazne operacije:

Datoteka zaglavlja Funkcija i opis
Koristi se za definiranje cout, cin i cerr objekti, koji odgovaraju standardnom izlaznom toku, standardnom ulaznom toku i standardnom toku grešaka.
Koristi se za deklariranje usluga korisnih za izvođenje formatiranog I/O-a, kao što je setprecision i setw.
Koristi se za deklariranje usluga za korisnički kontroliranu obradu datoteka.

iostream: To je jedna od najvažnijih datoteka zaglavlja za ulazno/izlazne operacije u C++. To stoji za 'ulaz izlaz' potok. Za rad s različitim oblicima ulazno/izlaznih tokova, iostream datoteka zaglavlja uključuje klase istream (ulazni tok) i ostream (izlazni tok) kao i njegove izvedene klase ifstream, ofstream , i stringstream . Najčešće korištene klase ove datoteke zaglavlja su cin (standardni unos) i cout (standardni izlaz) , koji vam omogućuju čitanje korisničkog unosa i prikaz izlaza na konzoli. Na primjer:

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

Izlaz

 Enter a number: 42 You entered: 42 

iomanip: Ova datoteka zaglavlja označava 'ulazno-izlazna manipulacija' . Omogućuje alate za formatiranje ulazni i izlaz . Omogućuje vam izmjenu poravnanje, širina, preciznost , i druge značajke oblikovanja ulaza i izlaza. Setw, setprecision, fiksno, lijevo, desno , a ostale redovito korištene funkcije navedene su u nastavku. Posebno je zgodan za prezentiranje podataka na određeni način.

Primjer:

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

Izlaz

duljina java niza
 Value of pi: 3.14 

tok: Poziva se datoteka zaglavlja za operacije ulaza/izlaza datoteke fstream . Sadrži klase za čitanje i pisanje u datoteke ifstream (ulazni tok datoteke) i ofstream (tok izlazne datoteke) . Sustav koristi ove klase za otvaranje datoteka samo za čitanje i samo za pisanje.

Primjer:

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

Izlaz

 The file was written successfully. 

Ove datoteke zaglavlja su među najvažnijima za C++ ulazno/izlazne zadatke. Svaki ima specifičnu svrhu i nudi alate potrebne za uspješno upravljanje zadacima koji uključuju ulaz i izlaz, bilo da se radi o interakciji s konzola, formatiranje izlaza , ili rad s datotekama.

U C++-u često koristimo 'using namespace std;' nakon datoteka zaglavlja. The imenski prostor std; naredba se često koristi u C++ za pojednostavljenje koda pri radu sa standardnim komponentama biblioteke. Ispitajmo detaljnije funkciju i primjenu ove izjave:

A imenski prostor je tehnika za grupiranje sličnih identifikatora (kao što je klase, funkcije , i varijable ) kako biste spriječili sukobe naziva. C++ standardna biblioteka pruža svoje dijelove (kao što su cin, cout, itd.) pod std imenskim prostorom.

Uvjet 'standard' je skraćeno na 'std' , au njemu su sadržani svi elementi standardne biblioteke. Time se smanjuju sukobi naziva s identifikatorima postavljenim u vašem kodu.

Razgovarajmo sada o tome zašto using namespace std; izjava se koristi:

Bez korištenja imenskog prostora 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; } 

Kao što vidite, korištenjem imenski prostor std; izjava vam omogućuje da izostavite std:: prefiks prilikom pristupa standardnim komponentama knjižnice. Vaš kôd čini kraćim i čitljivijim jer ne morate ponavljati std:: prije svakog identifikatora standardne knjižnice.

Datoteke zaglavlja I/O biblioteke

Standardni izlazni tok (cout):

Objekt cout je unaprijed definirani objekt klase ostream. Spojen je na standardni izlazni uređaj, koji je obično zaslon. Cout se koristi u kombinaciji s operatorom umetanja toka (<<) to show the output on a console< p>

Pogledajmo jednostavan primjer standardnog izlaznog toka (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; } 

Izlaz

 Value of ary is: Welcome to C++ tutorial 

Standardni ulazni tok (cin)

The jelo je unaprijed definirani objekt potok razreda. Povezan je sa standardnim uređajem za unos, koji je obično tipkovnica. Cin se koristi zajedno s operatorom ekstrakcije toka (>>) za čitanje ulaza s konzole.

Pogledajmo jednostavan primjer standardnog ulaznog toka (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; } 

Izlaz

 Enter your age: 22 Your age is: 22 

Standardna završna linija (endl)

The endl je unaprijed definirani objekt naš neprijatelj razreda. Koristi se za umetanje znakova novog retka i ispiranje toka.

Pogledajmo jednostavan primjer standardne završne linije (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;>

Standardni tok pogrešaka bez međuspremnika (cerr):

cerr stoji za 'standardna pogreška' .

To je tok bez međuspremnika, što znači da je izlaz poslan na cerr se odmah prikazuje na konzoli bez spremanja u međuspremnik.

Obično se koristi za prikaz poruka o pogreškama i dijagnostičkih informacija, koje je potrebno odmah prikazati kako bi se izbjegla kašnjenja uzrokovana spremanjem u međuspremnik.

Primjer: pomoću cerr:

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

Izlaz

 This is an error message. 

baferirani standardni tok pogrešaka (začepljenje):

klompa stoji za 'standardni dnevnik' . To je baferirani tok, sličan cout. Često se koristi za pisanje informativnih ili dijagnostičkih poruka koje su vremenski manje osjetljive od pogrešaka. Korištenje međuspremnika može poboljšati izvedbu pri prikazivanju velikog broja poruka.

Primjer: korištenje začepljenja

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

Izlaz

 This is an informational message. 

U oba primjera, izlaz će se pojaviti na konzoli. Međutim, glavna razlika između cerr i začepiti leži u njihovom ponašanju međuspremnika. Zbog svoje prirode bez međuspremnika, poruke koje se daju cerr prikazuju se odmah, ali poruke poslane na začepljenje mogu biti u međuspremniku radi veće brzine. Međutim, oni će se ipak na kraju pojaviti na konzoli.

Napomena: Važno je upamtiti da će vrsta poruke koju želite prikazati odrediti hoćete li koristiti cerr ili clog. Koristite cerr za bitne poruke koje zahtijevaju trenutnu pozornost (poput poruka o pogrešci) i koristite clog za manje kritične dijagnostičke ili informativne poruke koje se mogu spremiti u međuspremnik za bolju izvedbu.