Есть ли какой-либо способ, которым я могу игнорировать символы, отправленные «Ctrl Z”, и считывать данные из istream?

#c #istream

#c #istream

Вопрос:

Вот мой код.(Я задал совершенно другой вопрос, который был неясен и помечен как дублированный, и из-за незнания я отредактировал его, чтобы он выглядел так же, как этот. Извините за это.)

 #include<iostream>
#include<vector>



using std::cin;
using std::cout;
using std::endl;
using std::vector;

int main()
{
    int i;
    vector<int> v1;
    vector<int> v2;
    cout << "enter elements for v1" << endl;
    while (cin >> i) {
        v1.push_back(i);
    }
    cout << "enter elements for v2" << endl;


    //I try to ignore character(s) sent by "Ctrl Z"
    cin.clear();
    /*cin.sync();*/
    cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
    cin.ignore(std::numeric_limits<std::streamsize>::max(), 'x1A');
    cin.ignore(std::numeric_limits<std::streamsize>::max(), EOF);
    cin >> i;


    while (cin >> i) {
        v2.push_back(i);
    }

    for (auto c : v1) {
        cout << c << " ";
    }
    cout << endl;

    for (auto c : v2) {
        cout << c << " ";
    }
    cout << endl;


}
  

Я хочу нажать 1 2 Ctrl Z, чтобы добавить элементы для v1, и нажать 3 4 Ctrl Z, чтобы добавить элементы для v2, но в конечном итоге я получаю пустой вектор v2. Есть ли какой-либо способ, которым я могу это сделать? Почему подходы, которые я использую, не работают?

Ответ №1:

Я думаю, что я неправильно истолковал использование слова игнорировать,http://www.cplusplus.com/reference/istream/istream/ignore /, просто удалите все инструкции, содержащие «игнорировать», и я получу ожидаемый ответ.