logo

C++ alap bemenet és kimenet (I/O)

A C++ I/O művelet a stream koncepciót használja. A bájtok sorozatát vagy adatfolyamot adatfolyamnak nevezzük. Felgyorsítja a teljesítményt.

Ha bájtokat továbbítanak a fő memóriából egy olyan eszközre, mint a nyomtató, a kijelző, a hálózati kapcsolat stb., ezt kimeneti műveletnek nevezzük.

Bemeneti művelet történik, amikor egy eszközről, például nyomtatóról, kijelzőről vagy hálózati kapcsolatról bájtok áramlanak a fő memóriába.

C++ nyelven, előre meghatározott funkciókat a deklarációk pedig fejlécfájlokon keresztül érhetők el, lehetővé téve bizonyos feladatok elvégzését anélkül, hogy a kezdetektől új kódot kellene írnia. A C++ bemeneti/kimeneti műveleteihez néhány fontos fejlécfájl tartalmaz funkciókat a bemeneti és kimeneti feladatok hatékony végrehajtásához. A C++ Standard Library, a C++ programozási nyelven létrehozott osztályok és metódusok gyűjteménye tartalmazza ezeket a fejlécfájlokat. Beszéljük meg a fő fejléc fájlokat a bemeneti/kimeneti műveletekhez:

Fejléc fájl Funkció és leírás
Meghatározására szolgál a cout, cin és cerr objektumok, amelyek megfelelnek a szabványos kimeneti adatfolyamnak, a szabványos bemeneti adatfolyamnak és a szabványos hibafolyamnak.
A formázott I/O végrehajtásához használható szolgáltatások deklarálására szolgál, mint pl setprecision és setw.
Szolgáltatások deklarálására szolgál a felhasználó által vezérelt fájlfeldolgozáshoz.

iostream: Ez az egyik legfontosabb fejlécfájl a C++ bemeneti/kimeneti műveleteihez. Azt jelenti 'bemenet kimenet' folyam. A különböző formájú bemeneti/kimeneti adatfolyamokkal való munkához a iostream fejléc fájl tartalmazza az osztályokat istream (bemeneti adatfolyam) és ostream (kimeneti adatfolyam) valamint származtatott osztályai ifstream, offstream , és stringstream . Ennek a fejlécfájlnak a legjellemzőbb osztályai a következők cin (normál bemenet) és cout (standard kimenet) , amelyek lehetővé teszik a felhasználói bemenet olvasását és a kimenet megjelenítését a konzolon. Például:

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

Kimenet

 Enter a number: 42 You entered: 42 

iomanip: Ez a fejléc fájl jelentése 'bemenet-kimenet manipuláció' . Eszközöket biztosít a formázáshoz bemenet és Kimenet . Lehetővé teszi, hogy módosítsa a igazítás, szélesség, pontosság , valamint a bemenet és a kimenet egyéb formázási funkciói. Setw, setprecision, fix, bal, jobb , és más rendszeresen használt funkciókat az alábbiakban soroljuk fel. Különösen hasznos az adatok bizonyos módon történő megjelenítéséhez.

Példa:

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

Kimenet

fülke algoritmus
 Value of pi: 3.14 

folyam: A fájlbeviteli/kimeneti műveletekhez tartozó fejlécfájlt hívják meg fstream . Fájlokból való olvasáshoz és fájlokhoz való íráshoz osztályokat tartalmaz ifstream (bemeneti fájl adatfolyam) és ofstream (kimeneti fájl adatfolyam) . A rendszer ezeket az osztályokat használja a csak olvasható és csak írható fájlok megnyitására.

Példa:

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

Kimenet

 The file was written successfully. 

Ezek a fejlécfájlok a legfontosabbak a C++ bemeneti/kimeneti feladatokhoz. Mindegyiknek meghatározott célja van, és kínálja a szükséges eszközöket a bemeneti és kimeneti feladatok sikeres kezeléséhez, függetlenül attól, hogy interakcióban van-e a konzol, formázás kimenet vagy fájlokkal dolgozik.

C++ nyelven gyakran használjuk 'using namespace std;' a fejlécfájlok után. A névtér std; utasítást gyakran használják a C++-ban a kód egyszerűsítésére, amikor szabványos könyvtári összetevőkkel dolgozik. Vizsgáljuk meg részletesebben ennek az állításnak a funkcióját és alkalmazását:

A névtér egy technika a hasonló azonosítók csoportosítására (pl osztályok, függvények , és változók ) az elnevezési ütközések elkerülése érdekében. A C++ Standard Library részeit (például cin, cout stb.) az std névtér alatt biztosítja.

A kifejezés 'alapértelmezett' -re rövidül 'std' , és a szabványos könyvtár minden eleme benne van. Ezzel csökkennek a névütközések a kódban beállított azonosítókkal.

Most beszéljünk arról, hogy miért használja a namespace std; kifejezést használjuk:

Névtér std használata nélkül:

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

Mint látható, a névtér std; utasítás lehetővé teszi a kihagyását std:: előtag szabványos könyvtári összetevők elérésekor. Rövidebbé és olvashatóbbá teszi a kódot, mivel nem kell ismételnie std:: minden szabványos könyvtárazonosító előtt.

I/O Library fejléc fájlok

Normál kimeneti adatfolyam (cout):

A cout objektum egy ostream osztály előre definiált objektuma. A szabványos kimeneti eszközhöz csatlakozik, amely általában egy kijelző. A cout a stream beillesztési operátorral (<<) to show the output on a console< p>

Lássuk egy egyszerű példát egy szabványos kimeneti adatfolyamra (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; } 

Kimenet

 Value of ary is: Welcome to C++ tutorial 

Normál bemeneti adatfolyam (cin)

A enni egy előre meghatározott objektuma folyam osztály. A szabványos beviteli eszközhöz csatlakozik, amely általában egy billentyűzet. A cin a stream extrakciós operátorral (>>) együtt használatos a bemenet konzolról történő olvasására.

Lássuk a szabványos bemeneti adatfolyam (cin) egyszerű példáját:

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

Kimenet

 Enter your age: 22 Your age is: 22 

Normál végsor (endl)

A endl egy előre meghatározott objektuma az ellenségünk osztály. Új sorkarakterek beszúrására szolgál, és kiüríti az adatfolyamot.

Lássuk a szabványos végsor egyszerű példáját (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;>

Puffereletlen szabványos hibafolyam (cerr):

cerr jelentése 'normál hiba' .

Ez egy nem pufferelt adatfolyam, ami azt jelenti, hogy a kimenet a címre kerül cerr pufferelés nélkül azonnal megjelenik a konzolon.

Általában hibaüzenetek és diagnosztikai információk megjelenítésére szolgál, amelyeket azonnal meg kell jeleníteni a pufferelés okozta késések elkerülése érdekében.

Példa: cerr használata:

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

Kimenet

 This is an error message. 

pufferelt szabványos hibafolyam (eltömődés):

klumpa jelentése 'standard napló' . Ez egy pufferolt folyam, hasonló a couthoz. Gyakran használják olyan információs vagy diagnosztikai üzenetek írására, amelyek kevésbé időérzékenyek, mint a hibák. A pufferelés használata javíthatja a teljesítményt nagyszámú üzenet megjelenítése esetén.

Példa: dugulás használata

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

Kimenet

 This is an informational message. 

Mindkét példában a kimenet megjelenik a konzolon. Azonban a fő különbség között cerr és klumpa pufferelő viselkedésükben rejlik. Puffermentes jellege miatt a címzett üzenetek cerr azonnal megjelennek, de az eltömődésre küldött üzenetek pufferelhetők a nagyobb sebesség érdekében. Azonban végül mégis megjelennek a konzolon.

Megjegyzés: Fontos megjegyezni, hogy a megjeleníteni kívánt üzenet típusa határozza meg, hogy a cerr-t vagy a clog-ot használja. Használja a cerr-t az azonnali figyelmet igénylő alapvető üzenetekhez (például a hibaüzenetekhez), és használja az eltömődést a kevésbé kritikus diagnosztikai vagy információs üzenetekhez, amelyek pufferelhetők a jobb teljesítmény érdekében.