Как сравнить элемент массива с элементами заданного массива?

167
07 сентября 2021, 07:00

У меня есть массив из символов: char cif[] = { '0','1','2','3','4','5','6','7','8','9', ',','.', '/', ';'};

Также есть строка string s = "abcd123";

Мне нужно узнать есть ли в строке s элементы из массива cif

for (int i = 0; i < s.size(); i++) {
            if (s[i] == cif)
            {
               /.........../
            }
        }
Answer 1

строка в c++ - это массив символов типа char.

char cif[] = { '0','1','2','3','4','5','6','7','8','9', ',','.', '/',';'};
char s[]="abcd123";
for (int i=0, i<14, i++) {
    for (int j=0, j<7, j++) {
        if (s[j]==ciff[i]) {
            cout << "Yes " << s[j] << endl;
        }
    }
}

Тебе нужно два цикла, первый - идет по массиву символов, второй - по массиву строки, в зависимости от того какая у тебя строка - вместо 7 ставь либо n (если строка из n символов) или другое число, если оно заранее известно.

Answer 2

Если ваш s - это std::string, то ответ на вопрос дается простым

bool yes = s.find_first_of(cif, 0, sizeof cif) != s.npos;

А если вы оформите ваш cif в виде нуль-терминированной строки

char cif[] = { '0','1','2','3','4','5','6','7','8','9',',','.','/',';','\0'};
// или просто
char cif[] = "0123456789,./;";
// или 
const char *cif = "0123456789,./;";

то можно будет записать и чуть короче

bool yes = s.find_first_of(cif) != s.npos;
Answer 3
size_t pos = s.find_first_of("0123456789,./;");
if (pos != s.npos)
    cout << "найден символ " << s[pos] << '\n';
READ ALSO
Чтение из файла в массивы

Чтение из файла в массивы

Есть файл с таким набором точек:

84
Перезапись строки в файле

Перезапись строки в файле

Суть данной функции, дописывать в определенную строку вводимые данныеСтрока разделена разделителем "=" на две подстроки: первая - это два...

114
Динамическая память/С++

Динамическая память/С++

Недавно начал изучать с++И в процессе возник вопрос, а именно о том чем nullptr отличается от NULL?

116
Поиск всех вариантов праймеров для известного генома возбудителя болезни

Поиск всех вариантов праймеров для известного генома возбудителя болезни

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

280