Задача на повторяющиеся слова в С++

Всем привет. Только начал изучать С++ и столкнулся с задачей на повторяющиеся слова, код взят из книги Страуструпа по С++. Не понимаю как данный алгоритм сравнивает предыдущее слово с текущим (вроде же переменная previous это просто пустой пробел, но она как-то принимает значение прошлого слова в себя??). В общем, может кто-нибудь понимает, как работает данный цикл. Буду благодарен.

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string previous = " ";
    string current;
    while (cin >> current) {
    if (previous == current)
       cout << "Repeating word : " << current << endl;
    previous = current;
    }
}

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

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

previous для начала содержит пробел, в общем, она может ничего в себе не содержать. Но пробел там, чтобы нужно было сравнивать в условии. А так как при первой итерации

while (cin >> current)

ты получишь первое слово, оно сравнивается с

if (previous == current)

previous – есть пробел, в current – ​​будет слово, и конечно условие будет false. Поэтому дальше будет выполняться

previous = current;

При следующей итерации, ты снова получаешь возможность ввести слово, и уже на этом этапе происходит сравнение предыдущего слова с текущим.

while (cin >> current) {
  if (previous == current)

И если ты вел тоже самое слово, что и в прошлый раз, условие будет true - и мы получим на консоль -

cout << "Repeating word : " << current << endl;
→ Ссылка