Основы С++: ввод и вывод


Так как первым что пишут на любом языке программирования является строка "Hello, World!", этим мы и займемся сейчас, а именно разберемся со вводом и выводом.

 В языке программирования C++ предусмотрены операции ввода/вывода в поток. Это операции >> и << и потоки istream и ostream.

Сейчас мы рассмотрим как их использовать.

Данные потоки находятся в заголовочном файле iostream в пространстве имен std. О заголовочных файла и  пространствах имен позже. Сейчас вам необходимо знать только то что это необходимый минимум для использования потоков istream и ostream.



//Подключаем заголовочный файл
#include <iostream>

//Создаем главную функцию
int main()
{
    //Выводим строку в консоль
    std::cout << "Hello, World!" << std::endl;
    
    return 0;
}

Запуск любой программы на языке С++ начинается с вызова функции main. Когда мы вызовется функция main она выполнит команду:


std::cout << "Hello, World!" << std::endl;

А именно эта команда выводит на экран строку "Hello, World!". Она состоит из потока вывода std::cout, операции вывода в поток <<, строки "Hello, World!" и перевода курсора на новую строку std::endl.

Теперь мы знаем как написать самую простейшую программу на языке С++.

Давайте добавим в нее небольшую работу с пользователем, а именно попросим его ввести число, в ему вернем квадрат этого числа.


//Подключаем заголовочный файл
#include <iostream>

//Создаем главную функцию
int main()
{
    //Выводим строку в консоль
    std::cout << "Enter number: ";

    //Создаем целочисленную переменную x и присваиваем ей значение 0
    int x = 0;

    //Ожидаем ввод с клавиатуры
    std::cin >> x;

    //Выводим квадрат введенного числа в консоль
    std::cout << x * x << std::endl;

    return 0;
}

Что мы тут делаем? Как и в прошлом примере выводим на экран строку, только в этот раз не переводим курсор на новую строчку. Затем объявляем переменную x со значением 0. Затем ждем пока пользователь введет число с клавиатуры после чего сохраняем введенное число в переменную x. Далее выводи на экран произведение x * x и переводим курсор на новую строку.

Что мы добавили, собственно сам ввод переменной:

std::cin >> x;

Эта команда состоит из std::cin поток ввода, операции ввода >> и переменой x куда будет записываться результат ввода.

Теперь посмотри особенность ввода строк. В С++ два вида строк, одни из них пришли из Си, это массивы символов. Массив это последовательность одинаковых элементов. И оба вида строк можно вводит двумя способами.

Первый способ это через уже знакомую операцию ввода >>.


//Подключаем заголовочный файл
#include <iostream>

//Создаем главную функцию
int main()
{
    //Выводим строку в консоль
    std::cout << "Enter string: ";

    //Создаем переменную хранящую 50 символов
    char str[50];

    //Вводим первым сопособом
    std::cin >> str;

    //Выводим то что ввели
    std::cout << str << std::endl;

    return 0;
}

Если мы введем в консоль любую строку без пробелов (Mama, Table, pig), то программа выведет тоже самое на экран. Но если мы введем любую строку содержащую пробел, то программа выведет только то, что будет до пробела.

Ввод:
Mather washed window

Вывод:
Mather

Поэтому есть второй способ через метод потока ввода getline. Метод это функция которая принадлежит какому-нибудь объекту.


//Подключаем заголовочный файл
#include <iostream>

//Создаем главную функцию
int main()
{
    //Выводим строку в консоль
    std::cout << "Enter string: ";

    //Создаем переменную хранящую 50 символов
    char str[50];

    //Вводим вторым сопособом
    std::cin.getline(str, 50);

    //Выводим то что ввели
    std::cout << str << std::endl;

    return 0;
}

Теперь если мы введем строку содержащую пробелы она выведется правильно.

Функция getline принимает переменную, в которую нужно записать введенную строку с клавиатуры и размер этой переменной.

 На самом деле функции getline две, одна является методом потока ввода std::cin, а вторая просто функция std::getline. Вторая используется для строк добавленных в C++ std::string.

Вот измененный прошлый пример с использованием std::string

//Подключаем заголовочный файл
#include <iostream>
//Подключаем заголовочный файл для std::string
#include <string>

//Создаем главную функцию
int main()
{
    //Выводим строку в консоль
    std::cout << "Enter string: ";

    //Создаем строковую переменную
    std::string str;

    //Вводим вторым способом
    std::getline(std::cin, str);

    //Выводим то что ввели
    std::cout << str << std::endl;

    return 0;
}

Функция std::getline принимает поток ввода и переменную, в которую нужно записать результат ввода.

Теперь вы знаете как написать простую программу на С++, и уже можете писать программы решающие примеры по математике. Что бы не считать все на калькуляторе.