Почему меняется возвращаемое значение и значение в cout? codewars

Задача с codewars: вернуть величину наименьшего слова в предложении. Задачу не решил, суть не в этом.

При возвращении значения равному 3 программа увеличивает значение на единицу(в случае с элементом №3), или в два раза (в случае с элементом №6). Если использовать только cout, то значение ожидаемо правильное. Если использовать и cout, и return для stany, то в cout будет значение 34[3] или 36[6], а в return 3 и 6 соответственно. Из-за чего так?

#include <string>
#include <iostream>
#include <vector>
int find_short(std::string str)
{
  std::vector <std::string> stany;
  unsigned int value = 0;
  unsigned int position = 0;
  for(unsigned int i = 0; i <= str.length(); i++)
  {
    if(str[i] == ' ' or i==str.length())
    {
      stany.push_back(str.substr(value , position));
      value = i+1;
      position = 0;
    }
    else
    {
      position++;
    }
  }
  std::cout << stany[3].size();
  return stany[3].size();
}

Тест программы:

Assert::That(find_short("bitcoin take over the world maybe who knows perhaps"), Equals(3));

проблема со словом the и who


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