logo

Базове введення та виведення C++ (I/O)

Операція введення-виведення C++ використовує концепцію потоку. Послідовність байтів або потік даних називається потоком. Це прискорює продуктивність.

Якщо байти передаються з основної пам’яті на такий пристрій, як принтер, екран дисплея, мережеве з’єднання тощо, це називається операцією виведення.

Операція введення відбувається, коли байти надходять із такого пристрою, як принтер, екран дисплея або мережеве з’єднання, до основної пам’яті.

У C++, попередньо визначені функції і оголошення надаються через файли заголовків, що дозволяє вам виконувати певні завдання без необхідності писати новий код із самого початку. Кілька важливих файлів заголовків для операцій введення/виведення в C++ містять функції для ефективного виконання завдань введення та виведення. Стандартна бібліотека C++, набір класів і методів, створених мовою програмування C++, містить ці файли заголовків. Давайте обговоримо основні файли заголовків для операцій введення/виведення:

Файл заголовка Функція та опис
Він використовується для визначення cout, cin і cerr об’єктів, які відповідають стандартному потоку виводу, стандартному потоку введення та стандартному потоку помилок відповідно.
Він використовується для оголошення служб, корисних для виконання форматованого введення-виведення, наприклад setprecision і setw.
Він використовується для оголошення служб для обробки файлів, керованих користувачем.

iostream: Це один із найважливіших файлів заголовків для операцій введення/виведення в C++. Це означає 'введення-виведення' потік. Для роботи з різними формами потоків введення/виведення, the iostream файл заголовка містить класи istream (вхідний потік) і ostream (вихідний потік) а також його похідні класи ifstream, ofstream , і рядковий потік . Класи цього файлу заголовка найчастіше використовуються cin (стандартний вхід) і cout (стандартний вихід) , які дозволяють читати введені користувачем дані та відображати вихідні дані на консолі. Наприклад:

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

Вихід

 Enter a number: 42 You entered: 42 

іоманіп: Цей файл заголовка означає 'маніпуляції введенням-виведенням' . Він надає інструменти для форматування введення і вихід . Це дозволяє модифікувати вирівнювання, ширина, точність та інші функції форматування введення та виведення. Setw, setprecision, fixed, left, right та інші функції, які регулярно використовуються, наведено нижче. Це особливо зручно для представлення даних певним чином.

приклад:

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

Вихід

спати в javascript
 Value of pi: 3.14 

потік: Викликається заголовний файл для операцій введення/виведення файлів fstream . Він містить класи для читання з файлів і запису в них ifstream (потік вхідного файлу) і ofstream (потік вихідного файлу) . Система використовує ці класи для відкриття файлів лише для читання та лише для запису.

приклад:

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

Вихід

 The file was written successfully. 

Ці файли заголовків є одними з найважливіших для завдань введення/виведення C++. Кожен із них має конкретну мету та пропонує інструменти, необхідні для успішного керування завданнями, пов’язаними з введенням і виведенням, незалежно від того, чи це взаємодія з консоль, форматування виведення , або робота з файлами.

У C++ ми часто використовуємо 'using namespace std;' після файлів заголовків. The простір імен std; оператор часто використовується в C++ для оптимізації коду під час роботи з компонентами стандартної бібліотеки. Розглянемо функцію та застосування цього оператора докладніше:

А простір імен це техніка для групування подібних ідентифікаторів (наприклад класи, функції , і змінні ), щоб запобігти конфліктам імен. Стандартна бібліотека C++ надає свої частини (такі як cin, cout тощо) у просторі імен std.

Термін 'стандарт' скорочується до 'std' , і всі елементи стандартної бібліотеки містяться в ньому. Завдяки цьому зменшуються конфлікти імен з ідентифікаторами, встановленими у вашому коді.

Тепер давайте поговоримо про те, чому використання простору імен std; використовується оператор:

Без використання простору імен 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; } 

Як бачите, використовуючи простір імен std; оператор дозволяє опускати std:: префікс при доступі до компонентів стандартної бібліотеки. Це робить ваш код коротшим і більш читабельним, оскільки вам не потрібно повторюватися std:: перед кожним стандартним ідентифікатором бібліотеки.

Файли заголовків бібліотеки введення/виведення

Стандартний вихідний потік (cout):

Об’єкт cout є попередньо визначеним об’єктом класу ostream. Він підключений до стандартного пристрою виведення, яким зазвичай є екран дисплея. Cout використовується в поєднанні з оператором вставки потоку (<<) to show the output on a console< p>

Розглянемо простий приклад стандартного вихідного потоку (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; } 

Вихід

 Value of ary is: Welcome to C++ tutorial 

Стандартний вхідний потік (cin)

The прийом їжі є попередньо визначеним об’єктом потік клас. Він підключений до стандартного пристрою введення, яким зазвичай є клавіатура. Cin використовується в поєднанні з оператором вилучення потоку (>>) для читання введення з консолі.

Розглянемо простий приклад стандартного вхідного потоку (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; } 

Вихід

 Enter your age: 22 Your age is: 22 

Стандартна кінцева лінія (endl)

The endl є попередньо визначеним об’єктом наш ворог клас. Він використовується для вставки символів нового рядка та очищення потоку.

Давайте подивимося на простий приклад стандартного кінцевого рядка (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;>

Небуферизований стандартний потік помилок (cerr):

cerr виступає за стандартна помилка .

Це небуферизований потік, тобто вихідні дані надіслано до cerr негайно відображається на консолі без буферизації.

Зазвичай він використовується для відображення повідомлень про помилки та діагностичної інформації, які потрібно відображати негайно, щоб уникнути затримок, спричинених буферизацією.

Приклад: використання cerr:

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

Вихід

 This is an error message. 

буферизований стандартний потік помилок (засмічення):

clog означає стандартний журнал . Це буферизований потік, подібний до cout. Його часто використовують для написання інформаційних або діагностичних повідомлень, які менш чутливі до часу, ніж помилки. Використання буферизації може підвищити продуктивність при відображенні великої кількості повідомлень.

Приклад: використання clog

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

Вихід

 This is an informational message. 

В обох прикладах вихідні дані з’являться на консолі. Однак основна відмінність між cerr і засмічувати полягає в їх буферній поведінці. Завдяки своїй небуферизованій природі повідомлення, надані до cerr відображаються відразу, але повідомлення, надіслані на забивання, можуть бути буферизовані для більшої швидкості. Однак з часом вони все одно з’являться на консолі.

Примітка. Важливо пам’ятати, що тип повідомлення, яке ви хочете відобразити, визначатиме, чи використовуєте ви cerr чи clog. Використовуйте cerr для важливих повідомлень, які потребують негайної уваги (наприклад, повідомлення про помилки), і використовуйте clog для менш критичних діагностичних або інформаційних повідомлень, які можна буферизувати для кращої продуктивності.