Читайте также:
|
|
Ввод и вывод во время раб оты с Лиспом в основном осуществляется через дисплей и клавиатуру. Файлы используются, как правило, лишь для хранения программ в промежутке между сеансами. Однако иногда возникает необходимость работы с файлами из программы.
Ввод и вывод осуществляются независимо от конфигурации внешних устройств через потоки (stream). Потоки представляют собой специальные резервуары данных, из которых можно читать (поток ввода) или в которые можно писать (поток вывода) знаки или двоичные данные. У системы есть несколько стандартных потоков, которые являются значениями глобальных переменных. Наиболее важные из них
cin и
cout
Эти системные переменные определяют для функций ввода ( read-line и др.) и соответственно для функций вывода (prin x, terpri и др.) файлы по умолчанию, которыми в начале сеанса являются дисплей или терминал пользователя. В этом случае нет необходимости в начальном объявлении потока ввода для функции read-line или потока вывода для функций вывода.
Если мы хотим обмениваться данными с каким-нибудь новым файлом, то сначала его нужно открыть (open) в зависимости от его использования для чтения или для записи. У директивы open может быть много параметров.
( имя-файла open {параметр} )
Значением параметра могут быть следующие ключи:
параметр | значение |
in | Открыть поток для ввода |
out | Открыть поток для вывода |
Например, следующий вызов открывает поток для вывода в файл проба.lisp2d:
("проба.lisp2d" open 'out)
Потоковый объект, получаемый в результате вызова open, можно для следующего использования присвоить какой-нибудь переменной:
(nil setq поток ("проба.lisp2d" open 'in 'out 'trunc))Этот вызов присваивает переменной поток двусторонний поток, связанный с новым файлом "проба.lisp2d".
Все ранее рассмотренные функции ввода и вывода можно использовать и с указанием файла, задавая соответствующий файлу поток. Например, следующий вызов princ записывает выражение в новый файл "проба.lisp2d", и вызов read читает это выражение:
Чтобы записанные в файл данные сохранились, надо не забыть закрыть файл директивой close:
( поток close)
Дата добавления: 2015-07-21; просмотров: 38 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
READ-LINE читает и возвращает выражение | | | LOAD загружает определения |