Почему меняется возвращаемое значение и значение в 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