#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 /, просто удалите все инструкции, содержащие «игнорировать», и я получу ожидаемый ответ.