Не учитывать знаки пунктуации в функции

Сейчас програма считает все после пробела как слова. Мне нужно чтобы не учитывались знаки пунктуации (. , ! ? )

string str;
        int arr[64] = { 0 };
        while (!Txt.eof())
        {
            int i = 0;
            int word = 0;
            int count2 = 0;
            
            getline(Txt, str);
            
            while (str[i] != '\0') {

                if (word == 0 && str[i] != ' ')
                {
                        word = 1;
                        count2++;
                }

                else if (str[i] == ' ')
                    word = 0;
                i++;
            }
            arr[0] += count2;
        }
  

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

Автор решения: Konstantin_SH

Решение в лоб : можно добавить к пробелам все нужные знаки, через &&. А вообще я бы использовал isalpha() при проверке.

Вместо

if (word == 0 && str[i] != ' ') {
word = 1;
count2++;
}

напишите

if (word == 0 && isalpha((unsigned char) str[i])){
word = 1;
count2++;
}

И все должно у Вас работать.

→ Ссылка