#include<iostream>
#include<vector>
using namespace std;
int main(int argc, char **argv)
{
vector<int> digits;
int curDigit;
cout << "Enter a few numbers through gap" << endl;
while(1)
{
cin >> curDigit;
if(curDigit == 0)
{
break;
}
digits.push_back(curDigit);
};
cout << "Input:";
for(vector<int>::const_iterator it=digits.begin(); it != digits.end(); ++it)
{
cout << " " << *it;
}
cout << endl;
return 0;
}
[C/C++] Ввод прозвольного количества значений в одной строке
Пользователь вводит произвольное кол-во значений к переменным типа int, разделенных пробелом. Строка заканчивается нулем.
Пример:
2 9 4 36 5 0
Не подскажите, как такое считать не используя gets() и аналоги?
использовать cin, установить в качестве маркера окончания ввода пробел, читать в цикле пока не встретиться ноль.
Т.е. если наш маркер конца ввода - пробел, тогда после прочтения числа 5 из нашего примера, из потока в буфер пойдет "0\n..." до следующего пробела, если он будет.
А как установить два маркера конца ввода, если это возможно?
Цитата: Bonez92
Забыл сказать... После нуля, к сожалению, нет пробела.
Т.е. если наш маркер конца ввода - пробел, тогда после прочтения числа 5 из нашего примера, из потока в буфер пойдет "0\n..." до следующего пробела, если он будет.
А как установить два маркера конца ввода, если это возможно?
Т.е. если наш маркер конца ввода - пробел, тогда после прочтения числа 5 из нашего примера, из потока в буфер пойдет "0\n..." до следующего пробела, если он будет.
А как установить два маркера конца ввода, если это возможно?
смотрите в сторону манипуляторов, помниться, чем то таки на втором курсе занимались, хотя уже не уверен!:(
Как вариант решения: