logo

Podstawowe wejście i wyjście C++ (we/wy)

Operacja we/wy w języku C++ wykorzystuje koncepcję strumienia. Seria bajtów lub przepływ danych nazywana jest strumieniem. Przyspiesza wydajność.

Jeśli bajty są przesyłane z pamięci głównej do urządzenia takiego jak drukarka, ekran wyświetlacza, połączenie sieciowe itp., nazywa się to operacją wyjściową.

Operacja wejściowa ma miejsce, gdy bajty przepływają z urządzenia, takiego jak drukarka, ekran wyświetlacza lub połączenie sieciowe, do pamięci głównej.

w C++, predefiniowane funkcje i deklaracje są dostarczane poprzez pliki nagłówkowe, co pozwala na wykonanie określonych zadań bez konieczności pisania nowego kodu od początku. Kilka ważnych plików nagłówkowych dla operacji wejścia/wyjścia w C++ zawiera funkcje umożliwiające efektywne wykonywanie zadań wejścia i wyjścia. Biblioteka standardowa C++, zbiór klas i metod utworzonych w języku programowania C++, zawiera te pliki nagłówkowe. Omówmy główne pliki nagłówkowe dla operacji wejścia/wyjścia:

Plik nagłówkowy Funkcja i opis
Służy do definiowania cout, cin i cerr obiekty, które odpowiadają odpowiednio standardowemu strumieniowi wyjściowemu, standardowemu strumieniowi wejściowemu i standardowemu strumieniowi błędów.
Służy do deklarowania usług przydatnych do wykonywania sformatowanych operacji we/wy, takich jak ustawprecyzję i ustaw.
Służy do deklarowania usług przetwarzania plików kontrolowanych przez użytkownika.

iostream: Jest to jeden z najważniejszych plików nagłówkowych dla operacji wejścia/wyjścia w C++. To znaczy 'wejście wyjście' strumień. Do pracy z różnymi formami strumieni wejścia/wyjścia, iostream plik nagłówkowy zawiera klasy istream (strumień wejściowy) I ostream (strumień wyjściowy) jak i jego klasy pochodne jeśli strumień, strumień , I strumień ciągów . Najczęściej używanymi klasami tego pliku nagłówkowego są cin (wejście standardowe) I cout (standardowe wyjście) , które umożliwiają odczytywanie danych wejściowych użytkownika i wyświetlanie danych wyjściowych na konsoli. Na przykład:

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

Wyjście

 Enter a number: 42 You entered: 42 

jomanip: Ten plik nagłówkowy oznacza „manipulacja wejściem-wyjściem” . Zapewnia narzędzia do formatowania wejście I wyjście . Umożliwia modyfikację wyrównanie, szerokość, precyzja i inne funkcje formatowania danych wejściowych i wyjściowych. Setw, setprecyzja, stała, lewa, prawa i inne często używane funkcje są wymienione poniżej. Jest to szczególnie przydatne przy prezentowaniu danych w określony sposób.

Przykład:

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

Wyjście

zmiana nazwy folderu w systemie Linux
 Value of pi: 3.14 

strumień: Wywoływany jest plik nagłówkowy dla operacji wejścia/wyjścia na plikach fstream . Zawiera klasy do odczytu i zapisu do plików ifstream (strumień pliku wejściowego) I ofstream (strumień pliku wyjściowego) . System używa tych klas do otwierania plików tylko do odczytu i tylko do zapisu.

Przykład:

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

Wyjście

 The file was written successfully. 

Te pliki nagłówkowe należą do najważniejszych dla zadań wejścia/wyjścia w C++. Każdy z nich ma określony cel i oferuje narzędzia niezbędne do skutecznego zarządzania zadaniami obejmującymi dane wejściowe i wyjściowe, niezależnie od tego, czy wchodzi w interakcję z konsola, formatowanie wyjścia lub praca z plikami.

W C++ często używamy 'używając przestrzeni nazw std;' po plikach nagłówkowych. The standard przestrzeni nazw; instrukcja jest często używana w języku C++ w celu usprawnienia kodu podczas pracy ze standardowymi komponentami biblioteki. Przyjrzyjmy się bliżej funkcji i zastosowaniu tego stwierdzenia:

A przestrzeń nazw to technika grupowania podobnych identyfikatorów (takich jak klasy, funkcje , I zmienne ), aby zapobiec konfliktom nazewnictwa. Biblioteka standardowa C++ udostępnia swoje części (takie jak cin, cout itp.) w przestrzeni nazw std.

Termin 'standard' jest skracany do „standardowe” , a wszystkie elementy biblioteki standardowej są w niej zawarte. W ten sposób zmniejszone zostaną konflikty nazw z identyfikatorami ustawionymi w kodzie.

Porozmawiajmy teraz o tym, dlaczego using namespace std; używana jest instrukcja:

Bez użycia przestrzeni nazw 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 widać, korzystając z standard przestrzeni nazw; instrukcja pozwala pominąć std:: przedrostek podczas uzyskiwania dostępu do standardowych komponentów biblioteki. Dzięki temu Twój kod będzie krótszy i bardziej czytelny, ponieważ nie musisz go powtarzać standardowe:: przed każdym standardowym identyfikatorem biblioteki.

Pliki nagłówkowe biblioteki we/wy

Standardowy strumień wyjściowy (cout):

Obiekt cout jest predefiniowanym obiektem klasy ostream. Jest podłączony do standardowego urządzenia wyjściowego, którym zwykle jest ekran wyświetlacza. Cout jest używany w połączeniu z operatorem wstawiania strumienia (<<) to show the output on a console< p>

Zobaczmy prosty przykład standardowego strumienia wyjściowego (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; } 

Wyjście

 Value of ary is: Welcome to C++ tutorial 

Standardowy strumień wejściowy (cin)

The jedzenie jest predefiniowanym obiektem strumień klasa. Podłącza się go do standardowego urządzenia wejściowego, którym najczęściej jest klawiatura. Cyn jest używany w połączeniu z operatorem wyodrębniania strumienia (>>) do odczytywania danych wejściowych z konsoli.

Zobaczmy prosty przykład standardowego strumienia wejściowego (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; } 

Wyjście

 Enter your age: 22 Your age is: 22 

Standardowa linia końcowa (endl)

The koniec jest predefiniowanym obiektem nasz wróg klasa. Służy do wstawiania znaków nowej linii i opróżniania strumienia.

Zobaczmy prosty przykład standardowej linii końcowej (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;>

Niebuforowany standardowy strumień błędów (cerr):

cer oznacza 'Standardowy błąd' .

Jest to strumień niebuforowany, co oznacza, że ​​dane wyjściowe są wysyłane do cer jest natychmiast wyświetlany na konsoli bez buforowania.

Zwykle jest używany do wyświetlania komunikatów o błędach i informacji diagnostycznych, które należy wyświetlić natychmiast, aby uniknąć opóźnień spowodowanych buforowaniem.

Przykład: użycie cerr:

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

Wyjście

 This is an error message. 

buforowany standardowy strumień błędów (zatkanie):

zatykanie oznacza „dziennik standardowy” . Jest to strumień buforowany, podobny do cout. Jest często używany do pisania komunikatów informacyjnych lub diagnostycznych, które są mniej wrażliwe na czas niż błędy. Użycie buforowania może poprawić wydajność podczas wyświetlania dużej liczby komunikatów.

Przykład: użycie clog

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

Wyjście

 This is an informational message. 

W obu przykładach dane wyjściowe pojawią się na konsoli. Jednak główna różnica między cer I zatkać polega na ich buforowaniu. Ze względu na swój niebuforowany charakter, wiadomości przekazywane do cer są wyświetlane od razu, ale wiadomości wysyłane w celu zatkania mogą być buforowane w celu zwiększenia szybkości. Jednak ostatecznie pojawią się one na konsoli.

Uwaga: Ważne jest, aby pamiętać, że typ komunikatu, który chcesz wyświetlić, będzie determinował to, czy użyjesz cerr, czy clog. Używaj cerr do kluczowych komunikatów wymagających natychmiastowej uwagi (takich jak komunikaty o błędach) i używaj clog do mniej krytycznych komunikatów diagnostycznych lub informacyjnych, które można buforować w celu uzyskania lepszej wydajności.