Скажем, например, я хочу набрать набор из 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;
}
Вы можете использовать переменную для чтения ввода, который вы хотите игнорировать. Если вы просто пропускаете отдельные символы, примерно так должно работать:
char ignoreChar;
is >> ignoreChar; // Should be a '['
// for loop goes here
is >> ignore; // Shoudl be a ']'
Возможно, вы захотите добавить операторы if, чтобы убедиться, что игнорируемый символ фактически соответствует ожидаемому.
Кроме того, вы можете прочитать всю строку в виде строки и извлечь нужную информацию оттуда. Это называется разбором строк.
Других решений пока нет …