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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
#1

Очистить поток от EOF - C++

15.05.2011, 13:07. Просмотров 1626. Ответов 4
Метки нет (Все метки)

Как очистить вх. поток от символа конца строки? Вот например нужно мне считать два куска текста (с пробелами и переводами каретки) в два символьных массива
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# include <iostream>
using namespace std;
 
int main()
{
    int n=127;
    char ch1[n];
    char ch2[n];
    cout<<"cin.get in ch1: ";
    cin.get(ch1,n, EOF);
    cout<<"/ncin.get in ch2: ";
    cin.get(ch2,n, EOF);
    cout<<"/n/nCh1 is: "<<ch1<<"\nCh2 is: "<<ch2;
}
Но после ввода первого куска текста и нажатия ctrl+z символ конца строки остаётся во входящем потоке (у меня в системе он равен -1 это если попробовать cin.eof()) и второй ввод куска текста во второй симвльный массив не происходит. Как же убрать EOF из потока? cin.ignore() не помогает.
Задача по сути выдуманная и я просто хочу разобраться с этим так что решение вроде "измени условие чтобы конец ввода в первом случае был символом @" или ещё что подобное не пойдёт, хочу именно понять как очистить поток от символа конца ввода.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2011, 13:07     Очистить поток от EOF
Посмотрите здесь:

Очистить поток - C++
Хотел с помощью куска кода (см.ниже) очистить буфер связанный с потоком cin. Но выражение в скобках по какой-то причине не изменяется? ...

Как очистить входной поток от '\n'? - C++
Программа закрывается #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;conio.h&quot; #include &quot;windows.h&quot; using namespace::std; ...

Очистить поток std::stringstream - C++
Вызываю функцию и в ней в поток инициализирую строку lеftPPF, далее вызываю повторно функцию и иниц-я проводится еще раз, и в потоке...

Очистить поток из под try catch - C++
Как очистить поток из под try catch, чтобы после ошибки заново ввести? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

\n \0 EOF - C++
Добрый вечер, возник такой вопрос: зачем мы заменяем символ конца строки на нуль символ в данном коде (удаление символов содержащихся в s2...

Int Eof - C++
Вот проблема есть массив int a заполнять его целыми числами последовательность завершается признаком конца ввода

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
1644 / 1272 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
15.05.2011, 13:42     Очистить поток от EOF #2
перед cin.ignore() поставьте cin.clear()
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
15.05.2011, 13:44     Очистить поток от EOF #3
Цитата Сообщение от Gepar Посмотреть сообщение
Как очистить вх. поток от символа конца строки?
Еще можно - cin.sync();
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
15.05.2011, 13:54  [ТС]     Очистить поток от EOF #4
Цитата Сообщение от asics Посмотреть сообщение
Еще можно - cin.sync();
Это не сработало.
Цитата Сообщение от igorrr37 Посмотреть сообщение
перед cin.ignore() поставьте cin.clear()
А вот это помогло и без cin.ignore(). Но что делает эта cin.clear() и почему cin.ignore() в данном случае не срабатывала? cin.ignore() не пропускает символ конца ввода чтоли?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2011, 13:58     Очистить поток от EOF
Еще ссылки по теме:

EOF K&R - C++
Всем доброго времени суток. Изучаю Си по Дейтелам, а теперь попала в руки книга авторов языка. Интересно теперь будет параллельно по двум...

Не работает while (!***.eof() ! - C++
Здравствуйте, задание такое: Вводить с клавиатуры данные и записывать их в файл в виде Имя группа оценка Иванов ...

как поставить EOF? - C++
Ребят, подскажите пожалуйста. Итак, вот листинг программы. Если я открываю файл, созданный с помощью потока, все читается без проблем(я так...

Ifstream и eof в нем - C++
Имеется код: int main() { setlocale(LC_ALL, &quot;rus&quot;); // корректное отображение Кириллицы char abc; ofstream fout(&quot;ofstream...


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

Или воспользуйтесь поиском по форуму:
ValeryLaptev
Эксперт С++
1039 / 818 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
15.05.2011, 13:58     Очистить поток от EOF #5
Потому как clear() - это очистка флагов состояния потока. А ignore() - это игнорирование символа из потока. Совсем разные функции.
Yandex
Объявления
15.05.2011, 13:58     Очистить поток от EOF
Ответ Создать тему
Опции темы

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