Неформатированные операции ввода/вывода в C++

Опубликовано: 14 Сентября, 2022

В этой статье мы обсудим неформатированные операции ввода/вывода в C++. Использование объектов cin и cout для ввода и вывода данных различных типов возможно из-за перегрузки операторов >> и << для распознавания всех основных типов C++. Оператор >> перегружен в классе istream, а оператор << перегружен в классе ostream.

Общий формат чтения данных с клавиатуры:

cin >> var1 >> var2 >> …. >> var_n;

  • Здесь var 1 , var 2 , ……, var n — имена переменных, которые уже объявлены.
  • Входные данные должны быть разделены пробелами, а тип данных пользовательского ввода должен быть аналогичен типам данных переменных, объявленных в программе.
  • Оператор >> считывает данные посимвольно и присваивает их указанному местоположению.
  • Чтение переменных прекращается, когда появляется пробел или появляется тип символа, не соответствующий типу назначения.

Программа 1:

C++




// C++ program to illustrate the
// input and output of the data
// entered by user
#include <iostream>
using namespace std;
 
// Driver Code
int main()
{
    int data;
    char val;
 
    // Input the data
    cin >> data;
    cin >> val;
 
    // Print the data
    cout << data << "   " << val;
 
    return 0;
}

Выход:

Объяснение: В приведенной выше программе 123 хранится в переменной val целого числа, а B передается следующему объекту cin и сохраняется в переменной данных типа character.

Функции put() и get() :

Классы istream и ostream имеют предопределенные функции get() и put() для обработки односимвольных операций ввода и вывода. Функцию get() можно использовать двумя способами, например, get(char*) и get(void) для извлечения символов, включая пробелы, символы новой строки и табуляцию. Функция get(char*) присваивает значение переменной и get(void) возвращает значение символа.

Синтаксис:

char data;

// get() return the character value and assign to data variable
data = cin.get();

// Display the value stored in data variable
cout.put(data); 

Пример:

char c;

// directly assign value to c 
cin.get(c); 

// Display the value stored in c variable
cout.put()

Программа 2:

C++




// C++ program to illustrate the
// input and output of data using
// get() and puts()
#include <iostream>
using namespace std;
 
// Driver Code
int main()
{
    char data;
    int count = 0;
 
    cout << "Enter Data: ";
 
    // Get the data
    cin.get(data);
 
    while (data != " ") {
        // Print the data
        cout.put(data);
        count++;
 
        // Get the data again
        cin.get(data);
    }
 
    return 0;
}

Выход:

Функции getline() и write():

В C++ функции getline() и write() обеспечивают более эффективный способ обработки строковых вводов и выводов. Функция getline() считывает всю строку текста, которая заканчивается символом новой строки. Эта функция может быть вызвана с помощью объекта cin .

Синтаксис:

cin.getline(variable_to_store_line, size);

Чтение завершается символом ' ' (перевод строки) . Новый символ считывается функцией, но не отображается, а заменяется символом NULL. После чтения определенной строки cin автоматически добавляет символ новой строки в конец строки.

Функция write() отображает всю строку за один раз, и ее синтаксис похож на функцию getline(), только здесь для ее вызова используется объект cout .

Синтаксис:

cout.write(variable_to_store_line, size);

Ключевым моментом, который следует помнить, является то, что функция write() не прекращает автоматически отображать строку при появлении символа NULL . Если размер больше длины строки, то функция write() отображается за границей строки.

Программа 3:

C++




// C++ program to illustrate the
// input and output of file using
// getline() and write() function
#include <iostream>
#include <string>
using namespace std;
 
// Driver Code
int main()
{
    char line[100];
 
    // Get the input
    cin.getline(line, 10);
 
    // Print the data
    cout.write(line, 5);
    cout << endl;
 
    // Print the data
    cout.write(line, 20);
 
    cout << endl;
 
    return 0;
}

Выход:

C++