Форум программистов, компьютерный форум, киберфорум
Наши страницы

Для чего нужен EOF? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не понятный глюк с cout http://www.cyberforum.ru/cpp-beginners/thread173485.html
Дня доброго Есть небольшая програмулина #include<iostream> #include<string> #include<iomanip> using namespace std; class bmoney { private:
C++ Сортировка массива Помогите. Надо в функции main создать void sort(сортировка), сортировать "student" по баллу. pomogite nado v functie main sozdati void sort(sortirovca ),sortirovati "student" po balu:: #include... http://www.cyberforum.ru/cpp-beginners/thread173479.html
C++ Определить количество столбцов в матрице, не содержащих ни одного нулевого элемента
Нужна помощь в решении задая. 1) Дана целочисленная прямоугольная матрица. Определить количество столбцов, не содержащих ни одного нулевого элемента. 2) Характеристикой строки целочисленной...
C++ вложенный цикл вывод на экран
нужно вывести на экран вот это 55555 6666 777 88 9 #include <iostream> using namespace std; void main()
C++ Определить количество столбцов матрицы, не содержащих ни одного нулевого элемента http://www.cyberforum.ru/cpp-beginners/thread173449.html
Здравствуйте! Помогите , пожалуйста, решить задачу. Вот текст:1) Дана целочисленная прямоугольная матрица. Определить количествло столбцов, не содержащих ни одного нулевого элемента....
C++ Найти произведение элементов массива, расположенных между минимальным и максимальным по модулю элементами Здравствуйте. Помогите, пожалуйста, решить задачу. Вот текст: В одномерном массиве, состоящем из n ещественных элементов, вычислить: 1) сумму положительных элементов массива 2)произведение... подробнее

Показать сообщение отдельно
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
11.10.2010, 02:22
Цитата Сообщение от fasked Посмотреть сообщение
Поправочка, не is_good, а просто good.
ios::good - false, если любой из флагов состояний (eofbit, failbit, badbit) активен, то есть и при достижении конца потока/файла и при ошибки чтения/записи.
ios::fail - true, если любой из флагов состояний failbit или badbit активен, то есть проверка только на ошибки.
ios::bad - проверка только флага badbit.

Сами же флаги состояний описывают следующие свойства:
eofbit - конец потока/файла.
failbit - последняя операция завершилась неуспешно в связи с ошибкой в логике самой операции.
badbit - операция завершена неуспешно в связи с отказом записи (или чтения) в поток.
goodbit - нет никаких ошибок.

Поправьте, если не прав.
тут различие есть


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main(void)
{
    fstream f;
    
    cout << cin.good() << endl;
    
    cout << f.is_open() << endl;
    
    cout << f.good() << endl;
    
    //cout << cin.is_open() << endl; // не срабатывает
    
    return 0;
}
Код
[guest@localhost tests]$ g++ t.cpp -o t
[guest@localhost tests]$ ./t
1
0
1
[guest@localhost tests]$ g++ t.cpp -o t
t.cpp: In function ‘int main()’:
t.cpp:17: ошибка: ‘struct std::istream’ has no member named ‘is_open’
[guest@localhost tests]$


Добавлено через 6 минут
Цитата Сообщение от zikker Посмотреть сообщение
А кто говорит(печатает) про ошибки ?
Вопрос зачем .eof()
Ответ для определения конца ввода
Цитата Сообщение от zikker
C++
1
while (ch = cin.get()) != EOF)
по сути эквивалентно
C++
1
while (!cin.eof())
нет, вот как раз первый вариант сделан хоть и неправильно, но если его составить правильно, выйдет из цикла по ошибке, а второй вариант, встретив ошибку в середине cin, просто зациклится

программа должна выйти и сообщить, что встречена ошибка, а не зацикливаться, естественно ничего не сообщая

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using namespace std;
 
int main(void)
{
    char ch;
    
    while (cin.get(ch))
        cout << ch;
    
    cout << endl;
    
    return 0;
}
здесь после цикла ничего не проверяется, но необходимо вставить проверку потока cin, не было ли в нём ошибки
потому что оно могло прочитать поток до половины, а потом выйти, потому что дальше не читается
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru