Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
1

Запихнуть данные в поток

23.05.2011, 12:48. Показов 763. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Тааак, задам экстремальный вопрос:
В общем была себе перегрузка оператора ввода в одном примере, рассчитана на ввод 14 символов и их сохранение в разных переменных, а теперь вот захотелось мне добавить изначально проверку содержимого, но хитро - так чтобы предыдущий написанный код не редактировать. Так вот проверку входящего потока я пририсовал, а вот теперь хочу чтобы если всё хорошо с потоком то из моего символьного массива всё запихивалось в поток на ввод назад, те: создать для программы впечатление что во входящем потоке уже есть 14 символов из моего массива и теперь при следующем cin>> оно сначала сжевало мои запихнутые 14 символов, а потом уже принималось за считывание ввода с клавиатуры. Можно так?
Изначально вообще код был такой
C++
1
2
3
4
5
6
7
8
9
10
istream &operator>>( istream &ainput, PhoneNumber &number )
{
   ainput.ignore(); // skip (
   ainput >> setw( 3 ) >> number.areaCode; // input area code
   ainput.ignore( 2 ); // skip ) and space
   ainput >> setw( 3 ) >> number.exchange; // input exchange
   ainput.ignore(); // skip dash (-)
   ainput >> setw( 4 ) >> number.line; // input line
   return ainput; // enables cin >> a >> b >> c;       
}; // end function operator>>
Теперь такой
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
istream &operator>>( istream &ainput, PhoneNumber &number )
{
   char c[15];
   ainput.get(c,14);
   if (ainput.gcount()<14)
    ainput.clear(ios::failbit);
   if (c[1]==1 || c[1]==0) 
    ainput.clear(ios::failbit);
   if (c[2]!=0 && c[2]!=1 )
    ainput.clear(ios::failbit);
 
// ВОТ ЗДЕСЬ НАДО БЫ КАК-ТО ПОДПИХНУТЬ В ПОТОК СОДЕРЖИМОЕ МАССИВА СИМВОЛОВ C, НУ КРОМЕ СИМВОЛА '\0' КОНЕЧНО ЖЕ
 
   if (!(ainput.fail())) 
   {
   ainput.ignore(); // skip (
   ainput >> setw( 3 ) >> number.areaCode; // input area code
   ainput.ignore( 2 ); // skip ) and space
   ainput >> setw( 3 ) >> number.exchange; // input exchange
   ainput.ignore(); // skip dash (-)
   ainput >> setw( 4 ) >> number.line; // input line
   }
   return ainput; // enables cin >> a >> b >> c;       
}; // end function operator>>
Добавлено через 14 часов 15 минут
Мне всё ещё любопытно. Конечно же можно просто перекопировать из массива символов моего нужные данные в соотв. переменные, но хотелось научиться запихивать в буфер входящего потока данные чтобы они потом оттудова при следующем cin извлекались.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2011, 12:48
Ответы с готовыми решениями:

Запихнуть QStringList в поток в файл
Всем привет. Как можно готовые строки для записи в файл в формате QStringList перевести в...

Как поток чтения (или записи) запихнуть в класс?
Здравствуйте!!! Ребят, подскажите пожалуйста, собственно, как запихнуть в класс поток ifstream?...

Как запихнуть ~3K+ данные в БД через ADO?
Пытался subj сделать таким образом: 'переменная q содержит 3K данных в формате...

Как запихнуть запихнуть объект Me в Long?
Как запихнуть Me в Long, а потом достать его? Спасибо?

2
5232 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
23.05.2011, 15:01 2
istream& unget()

Добавлено через 2 минуты
А можно вообще ни чего не считывать, а использовать cin.peek()
1
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
23.05.2011, 17:37  [ТС] 3
Цитата Сообщение от Kastaneda Посмотреть сообщение
А можно вообще ни чего не считывать, а использовать cin.peek()
О ней знал, но не сильно с ней удобно. Спасибо за подсказку, сейчас почитаю.
0
23.05.2011, 17:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2011, 17:37
Помогаю со студенческими работами здесь

Создать поток сжатия GZipStream, и перенести данные из открытого файла в поток GZipStream
Здравствуйте. Объясните мне пожалуйста следующую вещь: Необходимо открыть файл для чтения. Создать...

Данные в поток
Ув. профи ,не подскажите ли , Как данные находящиеся в (LPCVOID)pdib и размером dwSize запихнуть...

Поток не выводит данные
Здравствуйте. При нажатии кнопки создается поток. Код для кнопки: private: System::Void...

Не удается записать данные в поток
Доброго времени суток. Создал клиент/сервер, после соединения клиент может отправлять данные...

Отдельный поток добавляет данные в DataGridView
Возникла нетривиальная задачка.. Имеется основной поток - приложение с DataGridView. В ходе работы...

Поток ofstream не считывает данные в документ .txt
При передаче ofstream, предварительного открытого в функции, вызывающей данную функции, в качестве...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru