Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/56: Рейтинг темы: голосов - 56, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 28.05.2014
Сообщений: 7
1

Ifstream и eof в нем

28.05.2014, 21:15. Показов 11326. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
setlocale(LC_ALL, "rus"); // корректное отображение Кириллицы
    char abc;
    ofstream fout("ofstream training.txt"); /// открываем текстовый документ
    ifstream fin("ifstream training.txt");
 
    do
    {
    fin >> abc;
    fout << abc << endl;
    }
    while(!fin.eof());
        fin.close();
    fout.close();
    return 0;
}
на входном файле у меня "бла бла бла 123"
на выходном функция записывает:
б
л
а
б
л
а
б
л
а
1
2
3
3






1 вопрос: что стало с пробелами?
2 вопрос: почему последний элемент функция вывела дважды?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.05.2014, 21:15
Ответы с готовыми решениями:

Нюансы условий достижения EOF в ifstream
Есть файл in.txt из 2х строк следующего содержания: abcde 12345 Есть код: #include &lt;iostream&gt;...

Дан текстовый файл. Вывести количество содержащихся в нем символов и строк (маркеры концов строк EOLN и конца файла EOF при подсчете количества символ
Дан текстовый файл. Вывести количество содержащихся в нем символов и строк (маркеры концов строк...

Различия ifstream::get() и ifstream::get(ch)
Доброго времени суток. Была тут тема, в которой я не разобрался до конца. Код ниже проверяет баланс...

Дан текст. Напечатать все имеющиеся в нем цифры. Определить количество цифр в нем.
Дан текст. Напечатать все имеющиеся в нем цифры. Определить количество цифр в нем.

9
Модератор
Эксперт С++
13678 / 10888 / 6465
Регистрация: 18.12.2011
Сообщений: 29,051
28.05.2014, 21:21 2
1.
Цитата Сообщение от Teddy Посмотреть сообщение
fin >> abc;
вводит одну букву пропуская пробельные символы.
Если хотите читать все буквы, то используйте abc=fin.get();
2. последнее чтение было чтением конца файла. Оно не изменило содержимое ввода,
вот оно и повторяется дважды.
0
0 / 0 / 0
Регистрация: 28.05.2014
Сообщений: 7
28.05.2014, 21:24  [ТС] 3
Объясните если не сложно как работает
C++
1
fin.eof()
он проверяет на конец файла элемент за указателем, на который переводит
C++
1
fin>>abc
?
и как избежать записи лишнего элемента?
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
28.05.2014, 21:33 4
eof() возвращает флаг конца файла. Флаг устанавливается функциями чтения, если они в процессе выборки символов доходят до конца.
0
0 / 0 / 0
Регистрация: 28.05.2014
Сообщений: 7
28.05.2014, 21:35  [ТС] 5
Спасибо большое. Вроде понял
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
28.05.2014, 21:37 6
Проверяй fail() после 10-й строки. Этот флаг должен выставляться, если ничего прочитать не удалось.
0
Модератор
Эксперт С++
13678 / 10888 / 6465
Регистрация: 18.12.2011
Сообщений: 29,051
28.05.2014, 21:51 7
Проще делать так
C++
1
2
3
4
while( fin >> abc)
{
    fout << abc << endl;
}
0
0 / 0 / 0
Регистрация: 28.05.2014
Сообщений: 7
28.05.2014, 21:52  [ТС] 8
он пробелы пропустит так. спасибо я уже разобрался
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
28.05.2014, 22:22 9
zss, а как это поможет? Экстрактор возвращает ссылку на поток. Или у меня документация какая-то другая?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
28.05.2014, 22:28 10
nmcf, std::istream имеет operator bool (C++11) или operator void* (C++03), благодаря которому в условных инструкциях можно не делать явную проверку на fail и bad биты. http://www.cplusplus.com/refer... ator_bool/
0
28.05.2014, 22:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2014, 22:28
Помогаю со студенческими работами здесь

EOF
Как сделать чтение файла до конца самого файла, а не до конца определенных символов: while (a !=...

ifstream
Доброго времени суток! Если создал тему не там, прошу извинить и перенести ее в надлежащие место:)...

Eof
Собственно не могу отловить вывод количества символов из потока, т.к. при достижении конца файла...

\n \0 EOF
Добрый вечер, возник такой вопрос: зачем мы заменяем символ конца строки на нуль символ в данном...


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

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