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

Можно ли продолжить считывать в поток после ^Z ? - C++

Восстановить пароль Регистрация
 
AnreyKazakov
Заблокирован
09.09.2012, 23:25     Можно ли продолжить считывать в поток после ^Z ? #1
Код конечно большой, но зато наглядный , прямо по заданию. Есть один минус планировал, чтобы считывал два вектора в cin, через getline. Первый читает, жмем Ctrl+Z и во второй while уже не заходит. Вроде условие даже поставил (или если к==0) , а к=0; перед этим условием определяется. Но все равно не заходит, даже на одну итерацию не хочет...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <vector>
#include <string>
#include <iterator>
int main(){
    using std::cout;
    using std::endl;
    using std::string;
    using std::vector;
    using std::getline;
    using std::cin;
    vector<string> vec;
    vector<string> ve2;
    string line,word;
    while(getline(cin,line)){ /*читаем первый вектор*/
        for(string::iterator iter=line.begin();iter!=line.end();++iter){
            if(*iter==' '){if(word!=""){vec.push_back(word);word="";}}else{
                word+=*iter;}
            }
            if(word!="")vec.push_back(word);
            word="";
        }
    int k=0;
    string line2;  /*здесь вроде как второй должны начинать считывать но увы*/
    while((getline(cin,line2))||(k==0)){ /*не выполняется ни при каких условиях =(*/
        k=1;
        cout<<"In while 2";
        for(string::iterator iter=line2.begin();iter!=line2.end();++iter){
            if(*iter==' '){if(word!=""){ve2.push_back(word);word="";}}else{
                word+=*iter;}
            }
            if(word!="")ve2.push_back(word);
            word="";
        }   
    for(vector<string>::iterator iter=vec.begin();iter!=vec.end();++iter)
    cout<<*iter<<" ";
    cout<<endl;
    for(vector<string>::iterator iter=ve2.begin();iter!=ve2.end();++iter)
    cout<<*iter<<" ";
    cout<<endl;
    if(vec==ve2){cout<<"vector1 and vector2 is eqality";}else{cout<<"vector 1 and vector2 is NOT eqality";}
    cout<<endl;
    return 0;
    }
В чем фокус???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2012, 23:25     Можно ли продолжить считывать в поток после ^Z ?
Посмотрите здесь:

C++ как можно считывать инфу с файла в виде массива строк?
C++ Можно ли в DLL создать поток?
Можно ли считывать поля класса из двоичного файла одним fread C++
C++ Подскажите пожалуйста, почему у меня после после выполнения цикла получается какой-то неперерывный поток данных
Сведения о машине можно считывать/записывать в файл C++
Как можно считывать из строки (std::string или char*) данные при помощи cin C++
Программа закрывается после решения первого уравнения. Как продолжить ее выполнение? C++
Можно ли перевернуть поток C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
09.09.2012, 23:32     Можно ли продолжить считывать в поток после ^Z ? #2
При вводе ^Z ( это символ конца файла в Win ), устанавливается флаг eof в потоке. Просто напишите после конца ввода
C++
1
std::cin.clear();
Yandex
Объявления
09.09.2012, 23:32     Можно ли продолжить считывать в поток после ^Z ?
Ответ Создать тему
Опции темы

Текущее время: 08:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru