Вывод текстовых строк
Текстовые (строковые) литералы в C++ представляются как последовательность символов, заключенная в двойные кавычки. Например:
"Это пример текстовой строки".
Вывод текстовых строк на экран осуществляется через стандартный поток вывода с помощью операции вывода <<:
cout << "Это пример текстовой строки";
Внутрь текстовых строк можно вставлять управляющие escape -последовательности. Escape-последовательности служат для управления выводом, и представляют собой специальные последовательности из двух или более символов, начинающиеся символом обратной наклонной черты - \. При этом каждая такая последовательность воспринимается компилятором как 1 символ. Примерами таких управляющих последовательностей в предыдущих программах являются \t - символ табуляции и \n - символ перевода строки (все эти последовательности приведены в разделе 3.5). С помощью Escape-последовательностей в текстовую строку можно включить любой символ с помощью его восьмеричного или шестнадцатеричного кода (в том числе и символы, которых нет на клавиатуре). Например:
cout << "Это символ с восьмеричным кодом 254:\t\254\n";
cout << "А это символ с шестнадцатеричным кодом xAA:\t\xAA\n";
На экран будут выведены две строки:
Это символ с восьмеричным кодом 254: ┐
А это символ с шестнадцатеричным кодом xAA: Є
Если на экран необходимо вывести пустую строку, достаточно вставить в поток дважды подряд управляющую последовательность \n:
cout << "Это первая строка\n";
cout << "\n"; // Вторая строка пустая
cout << "Это третья строка\n";
При выводе длинных текстовых строк их можно в тексте программы разбивать на части следующим образом:
cout << "Это " \
"условный " \
"пример " \
"длинного " \
"текста\n";
или так
cout << "Это " "условный " "пример "
"длинного " "текста\n";
На экран будет выведена одна строка, после чего экранный курсор перейдет на новую строку (управляющая последовательность \n):
Символ \ и символ пробела можно использовать для "сцепления" отдельных строк. Если в программе встречаются два или более строковых литерала, разделенные только пробелами, то они будут рассматриваться как одна символьная строка.
Ввод текстовых строк с клавиатуры будет рассмотрен позже.
Ввод/вывод арифметических типов данных
Пример простого ввода/вывода арифметических типов данных:
#include <iostream>
using namespace std;
int main ()
{
setlocale (0, "");
int i;
double d;
char c;
bool b;
cin >> i;
cout << i;
cin >> d;
cout << d;
cin >> c;
cout << c;
cin >> b;
cout << b;
system ("Pause");
return 0;
}
Особенности:
1. Ввод/вывод целочисленных значений осуществляется обычным образом в десятичной системе счисления.
2. Ввод вещественных типов данных можно осуществлять либо в формате с фиксированной точкой, либо в экспоненциальном формате.
3. Формат вывода вещественных значений выбирается автоматически в зависимости от выводимого значения.
4. Ввод символьных значений можно осуществлять только в виде одиночного символа. При вводе нескольких символов переменной c будет присвоен только первый символ. Могут возникнуть сложности с вводом русских букв.
5. Ввод/вывод логических значений осуществляется в числовом формате (0 - false, 1 - true).
Замечание:
При вводе числовых данных с клавиатуры могут возникать непредвиденные ошибки, вызванные вводом символов, недопустимых для числовых форматов. Например:
int i;
cin >> i;
При попытке ввода с клавиатуры числа 1234 допущена ошибка - набрано 12y34 и нажата клавиша ENTER (ошибочно была нажата клавиша y). Переменная i в этом случае будет содержать значение 12, и эта ошибка может привести к непредсказуемому дальнейшему поведению программы. В любом случае символы из потока ввода извлекаются оператором >> до тех пор, пока они соответствуют числовому формату. Как только в потоке ввода встречается символ, не соответствующий числовому формату, уже извлеченные символы преобразуются в числовое значение и присваиваются переменной ввода. Остальные символы игнорируются.
Форматирование ввода / вывода
В приведенных ранее примерах были использованы простейшие способы управления вводом/выводом с помощью специальных управляющих символов (ESCAPE последовательностей) - '\n' и '\t'. Однако, очень часто этого бывает недостаточно, например, для аккуратного структурированного оформления данных на экране.
Более гибкое управление вводом/выводом (форматирование ввода/вывода) в C++ осуществляется либо с помощью установки флагов форматирования, либо с помощью специальных манипуляторов ввода/вывода.