logo

C++ základní vstup a výstup (I/O)

C++ I/O operace využívá koncept streamu. Série bajtů nebo tok dat se označuje jako proud. Zrychluje výkon.

Pokud jsou bajty přeneseny z hlavní paměti do zařízení, jako je tiskárna, obrazovka, síťové připojení atd., nazývá se to výstupní operace.

Vstupní operace nastane, když bajty proudí ze zařízení, jako je tiskárna, obrazovka nebo síťové připojení, do hlavní paměti.

V C++, předdefinované funkce a deklarace jsou poskytovány prostřednictvím hlavičkových souborů, což vám umožňuje provádět konkrétní úkoly, aniž byste museli od začátku psát nový kód. Několik důležitých hlavičkových souborů pro vstupní/výstupní operace v C++ obsahuje funkce pro efektivní provádění vstupních a výstupních úloh. Tyto hlavičkové soubory obsahuje standardní knihovna C++, kolekce tříd a metod vytvořených v programovacím jazyce C++. Pojďme diskutovat o hlavních hlavičkových souborech pro vstupní/výstupní operace:

Soubor záhlaví Funkce a popis
Používá se k definování cout, cin a cerr objekty, které odpovídají standardnímu výstupnímu toku, standardnímu vstupnímu toku a standardnímu toku chyb.
Používá se k deklaraci služeb užitečných pro provádění formátovaných I/O, jako je např setprecision a setw.
Používá se k deklaraci služeb pro uživatelem řízené zpracování souborů.

iostream: Je to jeden z nejdůležitějších hlavičkových souborů pro vstupní/výstupní operace v C++. Znamená 'vstup výstup' proud. Pro práci s různými formami vstupních/výstupních toků, iostream hlavičkový soubor obsahuje třídy istream (vstupní stream) a ostream (výstupní proud) stejně jako jeho odvozené třídy ifstream, ofstream , a stringstream . Nejčastěji používané třídy tohoto hlavičkového souboru jsou cin (standardní vstup) a cout (standardní výstup) , které umožňují číst uživatelský vstup a zobrazovat výstup do konzole. Například:

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

Výstup

 Enter a number: 42 You entered: 42 

iomanip: Tento hlavičkový soubor znamená 'input-output manipulation' . Poskytuje nástroje pro formátování vstup a výstup . Umožňuje vám upravit zarovnání, šířka, přesnost a další funkce formátování vstupu a výstupu. Setw, setprecision, fixed, left, right a další pravidelně používané funkce jsou uvedeny níže. To je zvláště užitečné pro prezentaci dat určitým způsobem.

Příklad:

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

Výstup

přejmenovat složku linux
 Value of pi: 3.14 

proud: Je volán soubor záhlaví pro operace vstupu/výstupu souboru fstream . Obsahuje třídy pro čtení a zápis do souborů ifstream (stream vstupního souboru) a ofstream (stream výstupního souboru) . Systém používá tyto třídy k otevírání souborů pouze pro čtení a pouze pro zápis.

Příklad:

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

Výstup

 The file was written successfully. 

Tyto hlavičkové soubory patří mezi nejdůležitější pro vstupní/výstupní úlohy C++. Každý z nich má specifický účel a nabízí nástroje nezbytné k úspěšnému řízení úkolů zahrnujících vstup a výstup, ať už jde o interakci s konzole, formátování výstupu nebo práci se soubory.

V C++ často používáme 'použití jmenného prostoru std;' po hlavičkové soubory. The jmenný prostor std; příkaz se v C++ často používá ke zefektivnění kódu při práci se standardními komponentami knihovny. Podívejme se na funkci a aplikaci tohoto příkazu podrobněji:

A jmenný prostor je technika pro seskupování podobných identifikátorů (např třídy, funkce , a proměnné ), abyste předešli konfliktům v názvech. Standardní knihovna C++ poskytuje své části (jako je cin, cout atd.) pod jmenným prostorem std.

Termín 'Standard' je zkráceno na 'std' a jsou v něm obsaženy všechny prvky standardní knihovny. Tímto způsobem se sníží konflikty jmen s identifikátory nastavenými ve vašem kódu.

Nyní pojďme mluvit o tom, proč používat jmenný prostor std; používá se prohlášení:

Bez použití jmenného prostoru 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; } 

Jak vidíte, pomocí jmenný prostor std; příkaz umožňuje vynechat std:: předpona při přístupu ke standardním komponentám knihovny. Díky tomu je váš kód kratší a čitelnější, protože se nemusíte opakovat std:: před každým standardním identifikátorem knihovny.

Soubory záhlaví I/O knihovny

Standardní výstupní proud (cout):

Objekt cout je předdefinovaný objekt třídy ostream. Je připojen ke standardnímu výstupnímu zařízení, kterým je obvykle obrazovka. Cout se používá v kombinaci s operátorem vkládání proudu (<<) to show the output on a console< p>

Podívejme se na jednoduchý příklad standardního výstupního proudu (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; } 

Výstup

 Value of ary is: Welcome to C++ tutorial 

Standardní vstupní proud (cin)

The jíst je předdefinovaným objektem proud třída. Je spojen se standardním vstupním zařízením, kterým je obvykle klávesnice. Cin se používá ve spojení s operátorem extrakce streamu (>>) ke čtení vstupu z konzoly.

Podívejme se na jednoduchý příklad standardního vstupního proudu (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; } 

Výstup

 Enter your age: 22 Your age is: 22 

Standardní koncová čára (endl)

The endl je předdefinovaným objektem náš nepřítel třída. Používá se k vložení znaků nového řádku a vyprázdnění proudu.

Podívejme se na jednoduchý příklad standardní koncové čáry (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;>

Standardní chybový stream bez vyrovnávací paměti (cerr):

cerr znamená 'standardní chyba' .

Je to stream bez vyrovnávací paměti, což znamená, že výstup je odeslán do cerr se okamžitě zobrazí na konzole bez ukládání do vyrovnávací paměti.

Obvykle se používá pro zobrazování chybových zpráv a diagnostických informací, které je třeba zobrazit okamžitě, aby se předešlo prodlevám způsobeným ukládáním do vyrovnávací paměti.

Příklad: pomocí cerr:

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

Výstup

 This is an error message. 

standardní chybový proud ve vyrovnávací paměti (ucpání):

Clog znamená 'standardní protokol' . Je to bufferovaný stream, podobný cout. Často se používá pro psaní informačních nebo diagnostických zpráv, které jsou méně citlivé na čas než chyby. Použití ukládání do vyrovnávací paměti může zlepšit výkon při zobrazování velkého počtu zpráv.

Příklad: použití clog

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

Výstup

 This is an informational message. 

V obou příkladech se výstup objeví na konzole. Nicméně hlavní rozdíl mezi cerr a dřevák spočívá v jejich vyrovnávací paměti. Vzhledem k jeho unbuffered povaze, zprávy předány cerr se zobrazí okamžitě, ale zprávy odeslané do ucpání mohou být ukládány do vyrovnávací paměti pro vyšší rychlost. Na konzoli se však stejně nakonec objeví.

Poznámka: Je důležité si uvědomit, že typ zprávy, kterou chcete zobrazit, určí, zda použijete cerr nebo clog. Použijte cerr pro základní zprávy, které vyžadují okamžitou pozornost (jako jsou chybové zprávy) a použijte clog pro méně kritické diagnostické nebo informační zprávy, které lze uložit do vyrovnávací paměti pro lepší výkon.