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

Для чего нужен 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 <conio.h> #include <string.h> #include <iostream.h> #include <stdlib.h> extern void (*_new_handler)(void); typedef struct student 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++ Переопределение типа(typedef) http://www.cyberforum.ru/cpp-beginners/thread173434.html
Не как не могу разобраться что такое StartDLL/Startup в данном случае typedef void (*Startup)(); Startup StartDll; Можете записать то, что выше без typedef ?
C++ Выполнить сортировку элементов в той строке матрицы сумма элементов в которой максимальная как я могу писать эту задачу. Задана матрица целых чисел. Выполнить сортировку элементоь в той строке матрицы сумма элементов в которой максимальная. подробнее

Показать сообщение отдельно
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
11.10.2010, 02:22     Для чего нужен EOF?
Цитата Сообщение от 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, не было ли в нём ошибки
потому что оно могло прочитать поток до половины, а потом выйти, потому что дальше не читается
 
Текущее время: 17:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru