4 (Методические указания к лабораторным работам ИУ), страница 4

2018-01-11СтудИзба

Описание файла

Документ из архива "Методические указания к лабораторным работам ИУ", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информатика" в общих файлах.

Онлайн просмотр документа "4"

Текст 4 страницы из документа "4"

Функция с прототипом

istream& get(streambuf& buf, char = '\n');

извлекает из входного потока символы и помещает их в буфер, опре­деленный первым параметром. Чтение продолжается до появления ограничивающего символа, которым по умолчанию является '\n', но он может быть установлен явно любым образом.

Три следующих варианта функции get() позволяют прочесть из входного потока один символ. Функции

istream& get(unsigned char& cc) ;

istream& get(signed char& cc) ;

присваивают извлеченный символ фактическому параметру и воз­вращают ссылку на поток, из которого выполнено чтение. Функция

int get() ;

получает код извлеченного из потока символа в качестве возвращае­мого значения. Если поток пуст, то возвращается код конца файла EOF.

Функции "ввода строк":

istream& getline(signed char *array, int len, char= '\n');

istream& getline(unsigned char *array, int len, char= '\n');

подобны функциям get () с теми же сигнатурами, но переносят из входного потока и символ-ограничитель. Функция

int peek () ;

позволяет "взглянуть" на очередной символ входного потока. Точнее, она возвращает код следующего символа потока (или EOF, если поток пуст), но оставляет этот символ во входном потоке. При необходимости этот символ можно в дальнейшем извлечь из потока с помощью других средств библиотеки. Например, следующий цикл работает до конца строки (до сигнала от клавиши Enter ):

char cim;

while (cin.peek() != '\n')

{ cin.get(cim);

cout.put(cim) ; }

Принадлежащая классу istream функция

istream& putback (char cc);

не извлекает ничего из потока, а помещает в него символ cc, который становится текущим и будет следующим извлекаемым из потока сим­волом.

Аналогичным образом функция

int gcount ();

подсчитывает количество символов, которые были извлечены из входного потока при последнем обращении к нему. Функция

istream& ignore(int n=l, int EOF);

позволяет извлечь из потока и "опустить" то количество символов n, которое определяется первым параметром. Второй параметр определяет символ-ограничитель, при появлении которого выполнение функции нужно прекратить, даже если из потока еще не извлечены все n символов. Функции

istream& read(signed char *array, int numb);

istream& read(unsigned char *array, int numb);

выполняют чтение заданного количества numb символов в массив array.

Полезны следующие функции того же класса istream:

istream& seekg(long pos) ;

устанавливает позицию чтения из потока в положение, опре­деляемое значением параметра.

istream& seekg(long pos, seek_dir dir);

выполняет перемещение позиции чтения вдоль потока в на­правлении, определенном параметром dir, принимающим значения из перечисления enum seek_dir {beg, cur, end }. Относительная величина перемещения (в байтах) определяется значением параметра long pos. Если направление определено как beg, то смещение от начала потока; cur - от текущей по­зиции; end - от конца потока;

long tellg()

определяет текущую позицию чтения из потока.

Подобные перечисленным функции класса ostream:

long tellp()

определяет текущую позицию записи в поток:

ostream& seekp (long pos, seek_dir dir)

аналогична функции seekg () , но принадлежит классу ostream

и выполняет относительное перемещение позиции записи

в поток;

ostream& seekp(long pos);

устанавливает абсолютную позицию записи в поток.

Использование аргументов командной строки

Данные в функцию main() можно передавать через параметры из командной строки (строки запуска функции на выполнение из операционной системы). Это удобно при отладке программы (чтобы не вводить при каждом запуске одни и те же данные) и может быть удобным при использовании программы.

При использовании функции main() с параметрами в командной строке заголовок функции имеет вид:

int main(int argc, char* argv[]), где:

argc – количество параметров;

argv[] – массив указателей на параметры (каждый параметр – строка).

Первый параметр, argv[0] – указатель на полное имя исполняемого файла. Он передается по умолчанию и не указывается при запуске программы.

Для выполнения программы с аргументами в командной строке нужно уметь:

- запустить программу с параметрами в командной строке;
- проконтролировать из программы количество параметров;
- использовать параметры из командной строки в тексте программы.

Запуск программы с параметрами в командной строке можно осуществить непосредственно из командной строки ДОС или из среды программирования Microsoft Visual C++.

Для запуска из Microsoft Visual C++ нужно:

- открыть меню Project;

- выбрать пункт Settings;

- в окне Program settings выбрать закладку Debug;

- в поле Program arguments через пробел ввести необходимые параметры.

Для запуска из командной строки ДОС нужно выполнить следующие действия:

- на Рабочем столе Windows нажать кнопку ПУСК;

- в раскрывшемся меню выбрать пункт ВЫПОЛНИТЬ;

- с помощью кнопки ОБЗОР… найти нужный файл с расширением .exe;

- в окне Открыть: после символа “, стоящего в конце полного имени файла, через пробел ввести необходимые параметры.

При контроле числа параметров нужно иметь ввиду, что первый параметр всегда передается по умолчанию и число параметров будет на 1 больше, чем введено. Например, если передается один параметр - имя файла с исходными данными, то argc будет равно 2, argv[0] указывает на полное имя исполняемого модуля (точнее, на список параметров системного окружения, первым из которых является имя исполняемого файла), а argv[1] указывает на введенное имя файла с данными.

При использовании параметров нужно помнить, что каждый передаваемый параметр – это символьная строка. Если надо передать численное значение, то в программе надо преобразовать строку в число с помощью соответствующей типу числа функции (doubl atof(char *str), int atoi(char *str), или long atol(char *str)).

В качестве примера работы с файловыми потоками приведем программу копиро­вания одного файла в другой. Имена файлов берутся из аргументов командной строки:

// МуСору.срр

#include <iostream>

#include <fstream>

#include "ConsolCyr.h"

using namespace std;

int main(int argc, char* argv[])

{

if (argc != 3) cout <<"Неверное число аргументов"<<endl;

ifstream from(argv[1]); // открываем входной файл

if (!from)

{

cout<<"Входной файл "<< argv[1 ]<<" не найден"<<endl;

return 1;

}

ofstream to(argv[2]); // открываем выходной файл

if (!to)

{

cout<<"Выходной файл "<< argv[2]<< " не открыт"<< endl;

return1;

}

char ch;

while (from.get(ch))

{

to.put(ch);

if (!to) cout<<"Ошибка записи (диск переполнен).";

}

cout << "Копирование из " << argv[1] << " в " << argv[2] << " завершено." << endl;

return 0;

}

1 Цезарь для шифрования своих посланий использовал следующий прием. При кодировании и декодировании писем он заменял буквы в письме на следующие по алфавиту буквы с постоянным смещением, равным 13, то есть к порядковому номеру буквы в латинском алфавите, содержащим 26 букв, он прибавлял 13 и получал порядковый номер буквы в кодируемом (декодируемом) письме. Если полученный таким образом номер буквы был больше 26, то он уменьшался на 26.

2 Если во вводимой строке больше символов, чем может вместить выделенная для ее хранения об­ласть, поведение программы не определено. Скорее всего, она завершится аварийно

3 Синонимом термина «метод» является «компонентная функция».

4 Символ перевода строки '\n' появляется во входном потоке, когда вы нажимаете клавишу Enter

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
428
Средний доход
с одного платного файла
Обучение Подробнее