Почему не считает буквы, которые повторяются в с++?

В файле находится строка - pavel lubovalsy yablokom na stole ela mama

В результате должен выводиться результат 3, а не 0 как на фото. Помогите пожалуйста.

Задание: файл определить сколько слов в строке начинается с той же буквы, которой закончилось предыдущее слово.

введите сюда описание изображения

Код:

#include <fstream>
#include <stdlib.h>   
#include <iostream> 
using namespace std;
 
int main()
{ 
    int kol,i;
    
    cout << "Vvedite file s rashireniem: "<< endl;
    char a[50];
    cin >> a;

    string str;
    ifstream file(a,ios::in); 

    getline(file, str);
    cout<<str<<endl;
        
    for (int i=1;i<(str.length());i++)
    {
        if (a[i]==' ')  
        {
            if (a[i-1] == a[i+1])   
            {
            kol++;
            }   
        }
    }

    
    cout <<"Kolichestvo slow nachinajushihsya s toi je bukwi, kototoi zanonchilos predidushee slovo : " << kol << endl; 
    file.close();
    system("pause"); 
    return 0;
}

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

Автор решения: AR Hovsepyan

Локальный объект int kol не определен. и при объявлении содержит не известно что(мусор). Инициализируйте его нулем. Кроме этого, не нужно читать из файла всю строку, а потом его анализировать. Читайте просто до разделителя:

int counter = 0;
std::string str;
char c = ' ';
while (file >> str ) {        
    if (c == str[0] )
        ++counter;
    c = str.back();
}
cout << counter;

Если хотите прочитать только одну строку, тогда добавьте условие, что следующий читаемый символ не есть символ перевода строки: while (file.peek() != '\n' && file >> str )

→ Ссылка