русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Произвольный доступ в массив


Дата добавления: 2013-12-23; просмотров: 875; Нарушение авторских прав


Использование функций-членов класса ios

Ввод из массива

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

istrstream istr(char *buf);

Здесь buf представляет собой указатель на массив, который будет использоваться как источник символов всякий раз при выполнении ввода из потока istr. Массив, на который указывает указа­тель buf, должен завершаться нулевым символом. Однако нулевой символ никогда не читается из массива.

Ниже приведен пример, использующий строку в качестве ввода:

#include <strstrea.h>

#include <iostream.h>

int main()

{

char s[] = "One 2 3.00";

istrstream ins(s);

int i;

char str[80];

float f;

// чтение: one 2

ins >> str;

ins >> i;

cout << str << " " << i << endl;

// чтение 3.00

ins >> f;

cout << f << '\n';

return 0;

}

Если необходимо, чтобы только часть строки была использована для ввода, то надо применить следующую форму конструктора istrstream:

istrstream istr(char *buf, int size);

Здесь только первые size элементов массива будут использованы для ввода. Эта строка не обяза­тельно должна оканчиваться нулевым символом, поскольку именно величина size определяет раз­мер строки.

Связанный с памятью поток ведет себя точно так же, как потоки, связанные с устрой­ствами. Например, следующая программа иллюстрирует способ, с помощью которого может быть прочитан текст, оканчивающийся нулевым символом в массиве. Когда достигается конец массива, поток ins принимает значение NULL.

#include <strstrea.h>

#include <iostream.h>

int main()

{

char s[] = "C++ arrays are fun! 123.23 0x23\n";



istrstream ins(s);

char ch;

ins.unsetf(ios::skipws); // не пропускать пробелы

while(ins) // нуль в случае достижения конца массива

{

ins >> ch;

cout << ch;

}

return 0;

}

Доступ к потокам на основе массивов может быть также осуществлен с помощью стандартных функций-членов класса ios, таких как get() и put(). Также можно использовать функцию eof() для того, чтобы определить, когда будет достигнут конец массива. Например, следующая программа показывает, как прочитать содержимое массива с использованием функции get():

#include <strstrea.h>

#include <iostream.h>

int main()

{

char s[] = "This is a test array\23\22\21\a\t\n";

istrstream ins(s);

char ch;

while(!ins.eof())

{

ins.get(ch);

cout << ch;

}

return 0;

}

В данном примере величины, форматированные следующим образом \23\22\21 являются нетекстовыми управляющими символами CTRL-W, CTRL-V и CTRL-U. Знак \t является симво­лом табуляции. Таким образом могут быть прочитаны данные любого типа.

Если необходимо прочесть данные из буфера, то можно использовать функцию-член read(). Для записи данных в буфер используется функция write().

8.5 Потоки ввода/вывода в массивы

Для создания потока, способного вводить и выводить данные в массив, надо использовать следу­ющий конструктор класса strstream:

strstream iostr(char *buf, int size, int mode);

Здесь buf указывает на строку, используемую для операций ввода/вывода. Величина size содержит размер массива. Параметр mode служит для определения режима. Для нормальных опера­ций ввода/вывода параметру mode присваивается значение ios::in | ios::out. Для ввода массив дол­жен оканчиваться нулем.

Следующая программа использует массив для ввода и для вывода:

#include <strstrea.h>

#include <iostream.h>

int main()

{

char iostr[80];

strstream i(iostr, sizeof(iostr), ios::in | ios::out);

int a, b;

char str[80];

i << "1734 534abcdefghijklmnopqrstuvwxyz";

ios >> a >> b >> str;

cout << a << " " << b << " " << str << endl;

}

Эта программа сначала пишет два числа и буквы алфавита в массив, а затем читает их.

Важно помнить, что все обычные операции ввода/вывода сохраняют свое значение для ввода/вывода в массивы. Сюда относится также произвольный доступ с использованием функций seekg() и seekp(). В качестве примера следующая программа получает восьмой символ в iostr и выводит его. (Выводится символ h.)

#include <strstrea.h>

#include <iostream.h>

int main()

{

char iostr[80];

strstream i(iostr, sizeof(iostr), ios::in | ios::out);

char ch;

i << "abcdefghijklmnopqrstuvwxyz";

i.seekg(7, ios::beg);

i >> ch;

cout << "Character at 7: " << ch << endl;

return 0;

}

Можно проводить поиск где угодно внутри массива, но нельзя осуществлять поиск за его пре­делами.

Также можно использовать функции tellg() и tellp().



<== предыдущая лекция | следующая лекция ==>
Создание потока вывода | Использование динамических массивов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.017 сек.