Дополнительные возможности cin и cout.

В данной статье я расскажу о дополнительных возможностей входного(cin) и выходного(cout) потоков. Обычно в программах cin используется для ввода информации с клавиатуры, а cout для вывода информации на дисплей. На самом деле cin и cout являются объектами классов istream и ostream описанных в заголовочном файле iostream.h . I это input-ввод, O это output-вывод, а stream-поток. Как и все нормальные объекты cin и cout поддерживают разные опреаторы и операции. Я расскажу про основные методы классов cin и cout. Методами называются функции входящие в класс. Итак начнёмс…..
Метод cout.width (int i) позволяет указать минимальное количество символов, которое cout будет использовать для вывода следующего значения. Пример:

#include"iostream.h"
#include"conio.h"


void main()
{
for(int i=1; i<5; i++) { cout<<"Моё число:"; cout.width(i); cout<<9<<'\n'; } _getch(); }



Результатом будет следующее:

Моё число:9
Моё число: 9
Моё число: 9
Моё число: 9


Такую же работу выполняет функция setw(int i) определённая в iomanip.h.
По умолчанию используется пробел, но если хотите изменить,то для этого есть метод cout.fill(char t). Например следующая программа меняет пробел на точки.

#include"iostream.h"
#include"conio.h"


void main()
{
cout.fill('.');
for(int i=4; i<8; i++) { cout<<"Моё число:"; cout.width(i); cout<<9<<'\n'; } _getch(); }



Результатом будет:

Моё число:...9
Моё число:....9
Моё число:.....9
Моё число:......9


Точки будут использоваться в программе до тех пор пока вновь не будет вызвана функция cout.fill c новым аргументом.

При использовании cout для чисел с плавающей запятой трудно предположить сколько символов будет после запятой. При помощи функциии setprecision(int i) определённой в iomanip.h можно задать ограничение на количество цифр после запятой. Следующая программа демонстрирует вышесказанное:

#include"iostream.h"
#include"iomanip.h"
#include"conio.h"


void main(void)
{
float value = 1.23456;
int i;
for(i=1; i<6; i++) cout<


Результат будет:


1.2
1.23
1.235
1.2346
1.23456


Если вашей программе нужно выводить символы на дисплей по одному символу за раз, то для этого в iostream.h опредена функция cout.put(). Например:


#include"iostream.h"
#include"conio.h"


void main(void)
{
char string[]="Эта строка выводится по одному символу";
int i;


for(i=0; string[i];i++)
{cout.put(string[i]);
_getch();
}
}


Если необходимо вводить символы по одному, то для этого есть функция cin.get(), которая считывает символ с клавиатуры и возвращает его в программу,где символ присваивается переменной.


simbol=cin.get();


Например:


#include"iostream.h"
#include"ctype.h" // прототип toupper()
#include"conio.h"


void main(void)
{
char simbol;


cout<<"Continue? (Y/N): "; do{ simbol=cin.get(); simbol=toupper(simbol); }while((simbol!='Y')&&(lettter!='N')); cout<<"Your answer: "<


В предыдущей программе была ипользованна функция touper(), которая преобразовывает символ в верхний регистр. Прототип этой функции хранится в ctype.h.

Для чтения с клавиатуры целой строки используется метод cin.getline().

cin.getline(string, 64);

Например:


#include"iostream.h"
#include"conio.h"


void main(void)
{
char string[128];


cout<<"Введите строку символов и нажмите Enter"; cin.getline(string,128); cout<<"Вы ввели: "<


Для определения размера массива очень удобно использовать оператор с++ sizeof().


cin.getline(string,sizeof(string));


Есть ещё один параметр метода cin.getline(). С его мощью можно указать символ, после ввода которого последующие введённые символы не считываются.

Например:


#include"iostream.h"
#include"conio.h"


void main(void)
{
char string[128];
cout<<"Введите строку текста и нажмите Enter"; cin.getline(string,128,'a'); cout<<"вы ввели: "<


Ну вот и всё... Вообще есть и другие методы cin и cout, но эти наиболее часто используемые.