Проблема в том, что в 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"
, не удалось. Каждый раз, когда я нажимаю Войти, кажется, что программа все еще ждет большего числа и не распечатывает результат. Кто-нибудь может помочь мне сделать это успешно? Спасибо!
Ваш цикл ожидает, пока cin окажется в состоянии «сбой» или в конце файла. Нажатие Enter не делает ни один. Вы можете завершить ввод, нажав CTRL-Z в Windows или CTRL-D в Unix / Mac. Они посылают символ «Конец файла» в cin. В качестве альтернативы, измените условие цикла на «прослушивание» для какого-то определенного ввода.
Других решений пока нет …