Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Модуль Forms 65535
Реклама
Сейчас на сайте
Гостей: 12
На сайте нет зарегистрированных пользователей

Пользователей: 13,141
новичок: 7timok7
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Лабораторная работа по динамическим спискам на Turbo Pascal (перемещение...
Расчет размера дохода на одного человека в Turbo Pascal
Калькулятор на Delphi с переводом в другую систему исчисления + Блок схемы

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Теперь покажем, как использовать двунаправленный поток
Теперь покажем, как использовать двунаправленный поток (листинг 14.17).

Листинг 14.17. Применение двунаправленного строкового потока
{ string names[4] = {"Peter", "Mike", "Shea", "Jerry"}; string temp[4]; string name; int age; long salary;
stringstream strm; // двунаправленный поток
srand( (unsigned)time(NULL)); // инициализация датчика случайных чисел /* создание данных name, age и salary */ for (int loop=0; loop < 4; ++loop) strm<<names[loop]<<' '<<rand()%10+20<<' '<<rand()%5000+27500L<< endl;
/* вывод шапки */
cout << setw(4) << "#" << " | "
<< left << setw(20) << "Name" << м | "
<< right << setw(5) << "Age" << " | "
<< right << setw(15) << "Salary" << endl;
cout << " \n";
strm.seekg(6); // перевод позиции чтения/записи в начало потока
for (loop=0; loop < 4; ++1оор)
{ strm >> name >> age >> salary; // ввод name, age и salary cout << right << setw(4) << (loop + 1) << " | " << left << setw(20) << name << " | " << right << setw(5) << age << " | "
<< setw(15) << salary << endl;
}
}



Эта программа сначала пишет в поток strm. Потом из того же потока выполняется считывание и вывод на экран.
Перед считыванием устанавливается позиция чтения методом seekg (см. п. п. 27.6.1.3 в [1]). В объектно-ориентированной библиотеке позиционирование можно выполнять и для строковых, и для файловых потоков — этого нельзя делать только для стандартных потоков. Мы рассмотрим методы позиционирования далее.
Входной строковый поток можно использовать, чтобы реализовать считывание чисел из поля фиксированной длины. Не будем писать манипулятор с аргументами, а напишем простой шаблон функции (листинг 14.18).

Листинг 14.18. Ввод из поля фиксированной длины
template <class Т>
void fixedread(istream &in, T &t)
{ if (in.width() > 0) // ширина поля установлена
{ string field;
in >> field; // ввод по ширине или до пробела
istringstream strm(field); // входной строковый поток
if (!(strm >> t) // ввод из строкового потока
in.setstate(ios::failbit); // ошибки ввода
}
else // ширина поля по умолчанию
in >> t; // ввод в переменную
}



Если ширина поля ввода установлена (то есть не равна нулю), то объявляется строка для ввода и ввод выполняется в нее. Чтение выполняется либо до пробела, либо до заявленного количества символов. Затем этой строкой инициализируется строковый поток. Обратите внимание на то, что ввод из строкового потока проверяется на корректность и в случае ошибки устанавливается флаг f ai 1 bi t для входного потока-параметра.
Использовать эту функцию можно так:
int к = 0; cin.width(3); fixedread(cin, к);



Если мы последовательно нажмем клавиши 1, 2, 3, 4, то в переменную к попадет значение 123, а при нажатии, например, клавиш 5,6, -пробел, 4,5,6,7 — значение 56.
Опубликовал Kest Май 24 2014 02:21:11 · 0 Комментариев · 1858 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Proeffectimage
Tenis [Исходник н...
Разработка интерн...
Пример создания W...
Ehlib
Измерение тактово...
CoolHints2k v1.03
Игра змейка
Прграммирование в...
Платформа програм...
Разработка клиент...
Создание меню на ...
Простой пример ка...
Библия для програ...
Программа "AutoRu...
Искусство програм...
Дешифратор содерж...
Progressbar
Drag&Drop
Электронный магаз...

Топ загрузок
Приложение Клие... 100646
Delphi 7 Enterp... 94652
Converter AMR<-... 20169
GPSS World Stud... 16472
Borland C++Buil... 13697
Borland Delphi ... 9620
Turbo Pascal fo... 7200
Калькулятор [Ис... 5463
Visual Studio 2... 5101
FreeSMS v1.3.1 3604
Случайные статьи
Процедура SetBkCol...
MissingMappingActi...
Топология сети
marketnorist
Снизить шанс досту...
Протокол установле...
Защита Web-форм от...
Область применения...
Винтаж Дыши mp3 ск...
Применение электро...
н - Алфавитный ука...
Горизонтально напр...
Фирма Adobe
Рис. 1.25. Ручное ...
Topology Change и ...
Тогда мы придем к ...
Свободныеадреса в ...
Технологии построе...
Подсказки к некото...
Использование кома...
Форматированный вы...
Если Content Advis...
Основы спрайтовой ...
Онлайн автоматы Ву...
Поиск с помощью яз...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?