Поиск позиции элементов из строки символов в массиве
У меня есть строка символов с определенными числами, а мне нужно найти их позицию в массиве. Я написал функцию и она работает, но находит только позицию одного элемента. Подскажите пожалуйста что не так.
int findPosEl(char str1[], int arrpos[], int &sizepos, int arr[], int size){
int el = INT_MIN;
char *token = strtok(str1, " ");
while (token!=NULL){
el = atoi(token);
for(int i=0; i<size; i++){
if (el == arr[i]){
sizepos ++;
arrpos[sizepos] = i;
}
}
token = strtok(NULL, " ");
}
}
Я могу попробовать создать новый массив, элементы рядка символов присвоить ему, а потом запустить два цикла для поиска элементов, но хотелось бы реализовать это без нового массива, что бы код был меньше и проще.
Ответы (1 шт):
Если пишете программу на С++, то проще использовать его стандартную библиотеку, а не С:
int i = 0;
for( std::istringstream in( str1 ); in >> i ; ) {
auto pos = std::find( arr, arr + size, i ) - arr;
if( pos < size )
arrpos[ sizepos++ ] = pos;
}
вот и вся функция. Только не понятно, как вы собираетесь определять, какое число не было найдено. Можно для таких возвращать значение size, тогда в коде достаточно просто убрать строку с if()