lab10_3 (1080929)
Текст из файла
Ввод-вывод строк
Для ввода-вывода строк используются как уже известные нам объекты cin и cout, так и функции, унаследованные из библиотеки С. Рассмотрим сначала первый способ:
#include <iostream.h>
int main()
{
const int n = 80;
char s[n];
cin >> s; cout << s << endl;
return ();
}
Как видите, строка вводится точно так же, как и переменные известных нам типов. Запустите программу и введите строку, состоящую из одного слова. Запустите программу повторно и введите строку из нескольких слов. Во втором случае выводится только первое слово. Это связано с тем, что ввод выполняется до первого пробельного символа (то есть пробела, знака табуляции или символа перевода строки '\n')1. Можно ввести слова входной строки в отдельные строковые переменные:
#include <iostream.h>
int main()
{
const int n = 80;
char s[n], t[n], r[n];
cin >>s >>t >> r; cout <<s << endl << t << endl << r << endl;
return 0;
}
Если требуется ввести строку, состоящую из нескольких слов, в одну строковую переменную, используются методы getline или get класса istream, объектом которого является cin. Во втором семестре мы изучим, что такое методы класса2, а пока можно пользоваться ими как волшебным заклинанием, не вдумываясь в смысл. Единственное, что нам пока нужно знать, это синтаксис вызова метода — после имени объекта ставится точка, а затем пишется имя метода:
#include <iostream.h>
int main()
{
const int n = 80;
char s[n];
cin.getline(s. n);
cout << s << endl;
cin.get(s, n);
cout << s << endl;
return 0;
}
Метод getline считывает из входного потока n - 1 символов или менее (если символ перевода строки встретится раньше) и записывает их в строковую переменную s. Символ перевода строки3 также считывается (удаляется) из входного потока, но не записывается в строковую переменную, вместо него размещается завершающий 0. Если в строке исходных данных более n-1 символов, следующий ввод будет выполняться из той же строки, начиная с первого несчитанного символа. Метод get с двумя аргументами работает аналогично, но оставляет в потоке символ перевода строки. В строковую переменную добавляется завершающий 0.
Никогда не обращайтесь к разновидности метода get с двумя аргументами два раза подряд, не удалив \n из входного потока. Например:
cin.get(s, n); // 1- считывание строки
cout << s << endl; // 2- вывод строки
cin.get(s, n); // 3- считывание строки
cout << s << endl; // 4- вывод строки
cin.get(s, n); // 5 - считывание строки
cout <<s << endl; // 6- вывод строки
cout << "Конец - делу венец" <<endl; // 7
При выполнении этого фрагмента вы увидите на экране первую строку, выведенную оператором 2, а затем завершающее сообщение, выведенное оператором 7. Какие бы прекрасные строки вы ни ввели с клавиатуры в надежде, что они будут прочитаны операторами 3 и 5, метод get в данном случае «уткнется» в символ \n, оставленный во входном потоке от первого вызова этого метода (оператор 1). В результате будут считаны и, соответственно, выведены на экран пустые строки (строки, содержащие 0 символов). А символ \n так и останется «торчать» во входном потоке. Возможное решение этой проблемы — удалить символ \n из входного потока путем вызова метода get без параметров, то есть после операторов 1 и 3 нужно вставить вызов cin.get().
Однако есть и более простое решение — использовать в таких случаях метод getline, который после прочтения строки не оставляет во входном потоке символ \n.
Если в программе требуется ввести несколько строк, метод getline удобно использовать в заголовке цикла, например:
#include <iostream.h>
int main()
{
const int n = 80;
char s[n];
while (cin.getline(s, n))
{
cout << s << endl;
… // обработка строки
}
return 0;
}
1 Если во вводимой строке больше символов, чем может вместить выделенная для ее хранения область, поведение программы не определено. Скорее всего, она завершится аварийно
2 Синонимом термина «метод» является «компонентная функция».
3 Символ перевода строки '\n' появляется во входном потоке, когда вы нажимаете клавишу Enter
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.















