cin Создать массив, но игнорировать определенные символы в CIN

Скажем, например, я хочу набрать набор из 6 чисел. Но пользователь получит их в этом формате.

[1 2 3 4 5 6]

Есть ли способ создать его так, чтобы [] игнорировались или не помещались в массив, который я создал?

Как если бы ввести 1 2 3 4 5 6 все было бы хорошо. Если бы я поступил [1 2 3 4 5 6], очевидно, у меня были бы проблемы. Есть ли способ определить, что [] следует игнорировать или даже не вводить в массив при вводе?

Ниже я использую оператор перегрузки, где я собираю информацию. Первые два значения — это просто размеры моего 2d массива. Поэтому, если бы я должен был ввести [2 2 5 3 5 3], он бы вводил только значения после 2 2, которые являются размером массива, который я настроил. Но мне нужно обработать эти символы [ ] поэтому они не конфликтуют. Что было бы лучшим способом исправить это?

friend istream& operator>>(istream& is, Array<T> &array)
{
int rowX, colY;
is >> rowX;
is >> colY;

array.create(rowX, colY);

for(int i = 0; i<array.numRowX(); i++)
for(int j = 0; j<array.numColY(); j++)
{
T data;
is >> data;
array.setarray(i, j, data);
}

return is;
}

-1

Решение

Вы можете использовать переменную для чтения ввода, который вы хотите игнорировать. Если вы просто пропускаете отдельные символы, примерно так должно работать:

char ignoreChar;

is >> ignoreChar; // Should be a '['

// for loop goes here

is >> ignore; // Shoudl be a ']'

Возможно, вы захотите добавить операторы if, чтобы убедиться, что игнорируемый символ фактически соответствует ожидаемому.

Кроме того, вы можете прочитать всю строку в виде строки и извлечь нужную информацию оттуда. Это называется разбором строк.

3

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

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

По вопросам рекламы [email protected]