Во-первых, ваш синтаксис объявления массива неверен.
Поскольку вы используете C++, вы должны использовать встроенный класс array
для статических (фиксированных) массивов.
Правильный способ инициализации массива является со следующим синтаксисом:
std::array<char, 5> vowels = { 'a', 'e', 'i', 'o', 'u' };
Далее, этот синтаксис также не делать то, что вы думаете, это:
if (stringArr == 'a'|'e'|'i'|'o'|'u')
|
на самом деле является бинарный или, что означает, что он выполняет манипуляции с битами, чего вы не хотите. Кроме того, странно, что вы объявляете гласные, а затем повторно устанавливаете все гласные в этом выражении if. Не повторяйте себя! Используйте список, который вы уже сделали, и выполните поиск. Это делает ваш код намного проще в обслуживании.
Стандартный способ поиска array
(и многих других классов контейнеров) заключается в использовании функции find
.
c = 'a'; // some character
find(vowels.begin(), vowels.end(), c) != vowels.end()
Что это означает, что он будет возвращать true
если c
находится в vowels
.
Теперь нам нужно пройти через все символы строки, введенной пользователем. Для этого вам нужно использовать цикл. В C++ есть что-то, называемое range-based for
loop. Синтаксис выглядит следующим образом:
for (auto c : user_string)
{
// do something with c
}
Это будет перебирать целиком строки, и выполнять код внутри блока ({ }
) для каждого символа.
Вот рабочий код, который делает именно то, что вы хотите:
#include <iostream>
#include <cstdlib>
#include <string>
#include <iomanip>
#include <array>
#include <algorithm>
using namespace std;
int main()
{
bool vowels_found = false;
string user_string = "yea man";
array<char, 5> vowels = { 'a', 'e', 'i', 'o', 'u' };
for (auto c : user_string)
{
if (find(vowels.begin(), vowels.end(), c) != vowels.end())
{
cout << c;
vowels_found = true;
}
}
if (!vowels_found)
{
cout << "No vowels found.";
}
return 0;
}
Это не синтаксис * недействительный *, но он абсолютно неверен и не делает то, что вы думаете. –
Вы не можете комбинировать вещи в 'if', как это. Ваши «гласные» также не делают то, что вы думаете. Проверяйте массивы в любой книге. –
'const char vowels [] = {'a', 'e', 'i', 'o', 'u'};' и использовать цикл. –