cin — при вводе данных с клавиатуры, как завершить ввод, когда пользователь нажимает & quot; ввод & quot; в С ++?

Проблема в том, что в C ++ я надеюсь получить числа от пользователя и поместить каждое int в вектор. Поэтому я пишу следующий код:

#include <iostream>
#include <vector>
using namespace std;

vector<int> readVals()
{
vector<int> read;
int temp;
cin >> temp;
while (!cin.fail() && !cin.eof())
{
read.push_back(temp);
cin >> temp;
}
return read;
}

void printVals(vector<int> v)
{
if(v.size() >= 1)
{
for (vector<int>::size_type i = 0; i < v.size()-1; i++ )
{
cout << v[i] << " ";
cout << v[v.size()-1] << "\n";
}
}
}

int main()
{
vector<int> a = readVals();
printVals(a);
return 0;
}

Затем я компилирую его для создания файла a.out. У меня есть цифры в in1, И когда я делаю команду: a.out < in1Я получил то, что хочу.
Но я запутался, когда надеюсь, что данные могут быть введены пользователем. Пользователь может ввести несколько цифр и нажать Войти чтобы передать числа. Однако я использовал getline(), не удалось. !="\n", не удалось. Каждый раз, когда я нажимаю Войти, кажется, что программа все еще ждет большего числа и не распечатывает результат. Кто-нибудь может помочь мне сделать это успешно? Спасибо!

1

Решение

Ваш цикл ожидает, пока cin окажется в состоянии «сбой» или в конце файла. Нажатие Enter не делает ни один. Вы можете завершить ввод, нажав CTRL-Z в Windows или CTRL-D в Unix / Mac. Они посылают символ «Конец файла» в cin. В качестве альтернативы, измените условие цикла на «прослушивание» для какого-то определенного ввода.

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector