Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 523
Записей в блоге: 1
#1

Библиотека ввода\вывода. Задача - C++

05.07.2012, 17:40. Просмотров 430. Ответов 3
Метки нет (Все метки)

Напишите функцию, получающую и возвращающую ссылку на объект класса istream. Функция должна читать данные из потока до тех пор, пока не будет достигнут конец файла. Функция должнавыводить прочитанные данные на устройство вывода. Перед возвращением потока верните все её флаги в допустимое состояние. Проверьте созданную функцию, передав ей объект cin в качестве аргумента.


происходит зацикливание(строка 12), если ввести неправильные данные
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
 
std::istream& f(std::istream& me){
    int ival(0);    
    while (me >> ival, !me.eof()) {
        if (me.bad()) {
            throw std::runtime_error("IO stream corrupted");        
        }
        if (me.fail()) {
            std::cerr << "bad data, try again";
            me.clear(std::istream::failbit);
            continue;
        }
    }
    return me;
}
 
int main() {
    f(std::cin);
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2012, 17:40     Библиотека ввода\вывода. Задача
Посмотрите здесь:

Библиотека потокового ввода/вывода - C++
А верно ли, что данная библиотека является вещью абсолютно бесполезной для Windows-программирования и в настояящее время используется...

Библиотека потокового ввода-вывода и контейнерные классы.Дешифровка - C++
Задание:Создать функцию, которая расшифровывает зашифрованный файл на основании файла- ключа. Функция принимает в качестве параметров...

Задача на функции ввода-вывода - C++
Мне дали разработать программу, но я не понимаю как. Вот условие: В бинарном файле находятся числа. Разработать программу, которая...

Операторы ввода/вывода - C++
Всем привет! Было задание: сделать сложение двух окружностей, н.р. int main() { Circle c1(1,3,3); Circle c2(1,4,4); ...

Переопределение ввода / вывода - C++
Структура «абонент телефонной сети» содержит следующие поля: 1) фамилия (строка), 2) ули-ца, 3) дом, 4) квартира, 5) тел. номер....

Манипуляторы ввода/вывода - C++
Помогите пожалуйста с решением Выполнить задание соответствующего варианта, с использованием контейнерных классов и алгоритмов...

Перегрузка вывода и ввода - C++
Здравствуйте прошу помочь ,написал программу в ней нужно перегрузить вывод и ввод ,как это можно осуществить??пробовал перегружать...

Манипулятор ввода / вывода - C++
Чем отличается манипулятор ввода\вывода от пользовательский ввод\вывод ?

C++, переопределение ввода-вывода - C++
Решите, пожалуйста, если не трудно) Переопределить операции &lt;&lt; и &gt;&gt; для ввода-вывода матриц размерностью m*n, где m и n кон-станты....

Операторы ввода вывода в С++ - C++
ребят дайте пожалуйста понятную ссылку что бы можно было почитать и выучить операторы ввода вывода пожалуйста...

Потоки ввода-вывода - C++
1) Типы данных, для которых перегружены операторы форматного ввода-вывода.

Кодировка ввода и вывода - C++
В программу нужно ввести данные на русском языке, потом вывести #include &quot;stdafx.h&quot; using namespace std; const int num = 5; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kent
Нуб со стажем
36 / 34 / 2
Регистрация: 19.02.2012
Сообщений: 118
05.07.2012, 19:38     Библиотека ввода\вывода. Задача #2
вот так работает:
C++
1
2
3
4
5
6
if(me.fail()){
    std::cett<<"bad data, try again";
    me.clear();
    me.ignore(256,'\n');
    continue;
}
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 523
Записей в блоге: 1
05.07.2012, 19:50  [ТС]     Библиотека ввода\вывода. Задача #3
Цитата Сообщение от kent Посмотреть сообщение
вот так работает:
C++
1
2
3
4
5
6
if(me.fail()){
    std::cett<<"bad data, try again";
    me.clear();
    me.ignore(256,'\n');
    continue;
}
спасибо
объясни только
me.ignore(256,'\n');
kent
Нуб со стажем
36 / 34 / 2
Регистрация: 19.02.2012
Сообщений: 118
05.07.2012, 21:22     Библиотека ввода\вывода. Задача #4
C++
1
istream& std::istream::ignore ( streamsize n = 1, int delim = EOF );
считывает, но ни где не хранит, максимум n символов, пока не встретит delim. Когда происходит попытка считать из потока ошибочные символы, эти символы остаются в потоке, поэтому происходит зацикливание. С помощью
C++
1
me.ignore(256,'\n');
игнорируется вся строка
Yandex
Объявления
05.07.2012, 21:22     Библиотека ввода\вывода. Задача
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru