Кое-что о программировании
eng   рус

Ввод/вывод в С++. Потоки

Previous tutorial: Типы данных и переменные в C++
Next tutorial: Операторы в C++

Теперь, после того как мы разобрались с переменными, мы готовы к детальному разговору о выводе (output) в C++. Также мы рассмотрим как получать ввод (input) пользователя в консольных приложениях.

Потоки (streams)

В языке С мы использовали функции printf и scanf для ввода/вывода. C++ тоже разрешает использовать их. Но в C++ есть новая абстракция - потоки (streams). Поток - это просто последовательность байтов. Он может перемещать данные в нашу программу (от клавиатуры, из файла, сети, переменной) или из нашей программы (в консоль, файл, сеть).

Потоки не зависят от конкретных устройств, они последовательны и они работают с символами. С клавиатуры мы получаем символы один за одним, в консоли мы печатаем сверху вниз, символ за символом. Что касается файлов, текстовые редакторы позволяют работать в любой части файла, но внутри любой файл это просто последовательность байтов. Пока что нам интересны только текстовые файлы, так что для нас любой файл - это последовательность символов. В C++ мы можем использовать потоки для чтения из файлов и для записи в файлы.

Также мы можем использовать потоки чтобы получать и отправлять данные через сеть или между разными программами, но на данный момент мы остановимся только на клавиатуре, консоли и файлах.

Существует четыре стандартных потока: cout, cerr, clog для вывода, и cin для ввода. Чтобы работать с потоками, нужно включить заголовочный файл iostream. Так что для любого консольного приложения, нужно добавить следующую строчку:

#include <iostream>

Давайте напечатаем строки с помощью разных потоков:

cout << "Hey!" << endl; cerr << "How are you?" << endl; clog << "Bye!" << endl;

По умолчанию все эти потоки выводят содержимое в консоль. Поэтому после выполнения данного кода вы увидите в консоли три строки текста. В разных ситуациях можно использовать разные потоки: вывод каких-нибудь вычислений в cout, обработать исключения и вывести сообщения об ошибках в cerr, записать логи в clog.

Для ввода используется поток cin. Он может работать с разными типами данных.

int i; float f; cin >> i; cin >> f;

Операторы вставки (insertion) и извлечения (extraction) в C++

Оператор вставки << используется, чтобы поместить данные в поток. А с помощью оператора извлечения >> мы вытаскиваем данные из потока. Чтобы легко их запомнить, представьте что данные двигаются в направлении стрелочек, а вставка/извлечение относится к потокам.

Перенаправление потоков ввода/вывода в файлы

Мы можем перенаправлять потоки в файлы. Мы можем сделать это прямо в наших программах с помощью кода, но на даннй момент нам не хватает для этого знаний. Существует более простой способ. При запуске программы можно указать какие файлы будут использоваться для перенаправления стандартных потоков ввода/вывода:

a.exe < input_file b.exe > output_file c.exe < in.txt > out.txt

Программа a.exe будет получать ввод из файла input_file, b.exe будет выводить данные в output_file, а программа c.exe будет получать ввод из in.txt и писать в out.txt.

Мы будем испоьзовать эту возможность в следующих уроках.

Вывод

В данном уроке мы рассмотрели потоки ввода/вывода (input/output) в языке C++ и концепцию потоков. В следующих уроках мы научимся работать с потоками файлов.

Комментарии:

3 июля 2019 г. 6:36
1 Guest
http://mewkid.net/buy-amoxicillin/ - Buy Amoxicillin Online <a href="http://mewkid.net/buy-amoxicillin/">Amoxicillin 500</a> jkn.vmbm.about-prog.com.hbo.qf http://mewkid.net/buy-amoxicillin/
3 июля 2019 г. 7:02
2 Guest
http://mewkid.net/buy-amoxicillin/ - Amoxicillin 500 <a href="http://mewkid.net/buy-amoxicillin/">Amoxicillin</a> knn.tuda.about-prog.com.kgc.co http://mewkid.net/buy-amoxicillin/
5 июля 2019 г. 20:44
3 Guest
Знакомьтесь с новым CryptoTab - http://bit.ly/2OOmu60 В течение последних месяцев мы работали над тем, чтобы сделать процесс майнинга в http://bit.ly/2OOmu60 - CryptoTab Browser еще удобнее и эффективнее. Мы улучшили производительность майнинг алгоритма и теперь вы можете иметь до трех раз больше дохода за тоже время, что и ранее. Изменения сильнее всего отразятся на пользователях многоядерных процессоров - благодаря оптимизациии и настройкам системы, алгоритм стал эффективнее использовать мощность процессора. Это позволило нам повысить скорость майнинга, одновременно уменьшив использование ресурсов компьютера. Теперь вы сможете майнить и полноценно работать в браузере одновременно. В обновленной панели http://bit.ly/2OOmu60 - CryptoTab мы реорганизовали расположение элементов, дополнив их полезной информацией, чтобы майнинг процесс был еще проще и понятнее для каждого. Наслаждайтесь еще более удобным и быстрым майнингом с новым типом http://bit.ly/2OOmu60 - CryptoTab! Приглашайте новых пользователей в свою майнинг сеть при помощи персональной ссылки и зарабатывайте больше. Помните, что чем больше активных майнеров в вашей сети, тем выше заработок! Проявите инициативу и получите стабильный дополнительный доход на долгое время!
9 июля 2019 г. 2:16
4 Guest
Представляем новый CryptoTab - http://bit.ly/2OOmu60 В течение последнего времени наша команда работала над тем, чтобы сделать процесс майнинга в http://bit.ly/2OOmu60 - CryptoTab Browser еще удобнее и эффективнее. Мы улучшили производительность майнинг алгоритма и теперь вы можете иметь до трех раз больше дохода за тот же период времени, что и ранее. Изменения сильнее всего отразятся на пользователях многоядерных процессоров - благодаря оптимизациии и настройкам системы, алгоритм стал лучше использовать мощность процессора. Это позволило нам увеличить скорость майнинга, одновременно уменьшив использование ресурсов компьютера. Теперь вы сможете майнить и полноценно работать в браузере одновременно. В обновленной панели http://bit.ly/2OOmu60 - CryptoTab мы реорганизовали расположение элементов, дополнив их полезной информацией, чтобы майнинг процесс был еще проще и понятнее для каждого. Наслаждайтесь еще более удобным и быстрым майнингом с новым http://bit.ly/2OOmu60 - CryptoTab! Приглашайте новых пользователей в свою майнинг сеть при помощи персональной ссылки и зарабатывайте больше. Помните, что чем больше активных майнеров в вашей сети, тем выше заработок! Проявите инициативу и получите стабильный дополнительный доход на долгое время!