Подсчитать гласные в фамилии. Там строчка где сравнивается символ и гласные

#include <iostream>
#include <cstdlib>
using namespace std;
int Glasnie(char Username, int a);
int main()
{
    int a=0;// b, c, d, f1, f2, g1, g2, h1, h2;
    char Username;
    cin >> Username;
    Glasnie(Username, a);
    system("pause");
    return 0;
}
int Glasnie(char Username, int a)
{
    const char *glasnie = "AaEeIiOoUuYy";
    for (char sym = Username; sym; sym++)
    {
        for (int i = 0; i < 12; i++)
        {
            if (sym == glasnie[i]) a++;
        }
    }
    return a;
}

Ответы (1 шт):

Автор решения: AR Hovsepyan
#include <iostream>
#include <string>

int main() { 
    std::string vowels("AaEeIiOoUuYy"), Username;
    std::cin >> Username;
    unsigned a{}, 
    //находим позицию первого символа, входящего в vowels
    pos = Username.find_first_of(vowels);
    //пока эта позиция меньше чем длина строки(находимся в пределах строки
    while (pos != std::string::npos) {
        ++a;
        //находим позицию первого символа, входящего в vowels
        //начиная от следующего символа предыдущей позиции(pos + 1)
        pos = Username.find_first_of(vowels, pos + 1);
    }
    std::cout << a;
    return 0;
}

Проще, чем возиться с циклами и С_строками По такой же логике можете работать и с С_строками, а также пользоваться функцией strcspn

P.S. Не изменяйте код после ответов, чтобы ответы не оказывались неуместными.

→ Ссылка