Я работаю над карточной игрой на C ++, где хочу получить пользовательский ввод через getline ().Входные данные должны быть в в этом конкретном формате:
"1 2 3 4 5 6"
Диапазон чисел 1-11 и каждое число должно быть разделено пробелом. Пользователь вводит индексные числа для вектора.Скажем, он пишет «1 2 3» и нажимает ввод, позиции 0, 1 и 2 обозначаются вектором.
Я также открыт для любых других рекомендаций, касающихся решения по проекту, позволяющего пользователю вводитьвектор (или, по сути, их карты) положение.
Карты игроков отображаются в этом формате «1 синий» и хранятся в виде строк в векторе.Я решил, что пользователю слишком сложно вводить полное имя карты, поэтому я решил использовать векторный индекс.
Ниже приведен фрагмент кода моей строки регулярного выражения.Это работает, вроде.Он просто выталкивает всю строку в векторе, пропуская 10. Но мне не нужен 1 элемент вектора, подобный этому: «1 2 3 4», мне нужно 4 элемента вектора, каждое число которых равно одному.
Вещи, которые не должны совпадать:
"1234567"
"abcdef"
"12 34 567 32"
Если вам нужен дальнейший контекст, я с удовольствием предоставлю это.
Заранее спасибо
int main()
{
int i = 0;
std::regex rx("([[:digit:]]\\s)+([[:digit:]]\\s)+");
std::string line = "1 2 3 4 5 6 7 8 9 10";
std::smatch m;
std::vector<std::string> catchit;
while (regex_search(line, m, rx))
{
std::cout << "Pattern found " << m[i] << '\n';
catchit.push_back(m[i]);
line = m.suffix().str();
i++;
}
return 0;
}