Как использовать перенаправление ввода со специальным целым числом в качестве делителя и до eof - PullRequest
2 голосов
/ 04 июля 2019

Мне нужно использовать перенаправление ввода для хранения целых чисел в двух отдельных связанных списках. Наборы целых чисел разделены специальным целым числом 99999. Мне нужна помощь, чтобы прочитать до конца файла и игнорировать 99999. Также, поскольку в конце ввода нет 99999, я не могу остановить его, используя это.

Образец ввода 9 1 7 8 3 99999 6 5 4 3 11 -2

Если бы я использовал fstream, я чувствовал, что мог бы просто использовать функцию eof. Однако при попытке сделать это путем перенаправления это никогда не заканчивается.

LinkedList L1, L2; //Two linked lists
    int x;


        while(1)
        {
            cin>>x;
            L1.insertNode(x);//Function to add to linked list
            if(x==99999) break; //Attempt at ignoring 99999
        }
        while(1)
        {
            cin>>x;
            L2.insertNode(x);
            if(x=='\n') break; // Attempt to stop at eof
        }

1 Ответ

2 голосов
/ 04 июля 2019

Вы можете использовать тот факт, что ifstream::operator bool () возвращает false в EOF, чтобы завершить ваши циклы.

Код (изменен для использования std::list):

std::list <int> L1, L2;
int x;

while(std::cin >> x)
{
    L1.push_back(x);//Function to add to linked list
    if (x==99999) break; //Attempt at ignoring 99999
} 

while(std::cin >> x)
    L2.push_back(x);

Живая демоверсия

...