Вы не можете изменить размер строки, используя operator[]
. Вы пишете за пределами допустимого диапазона и вызываете неопределенное поведение. Используйте
result += s[j];
, чтобы добавить символы или инициализировать строку с правильным размером
string result(mid, '\0');
или просто скопируйте строку;
auto result = s.substr(0, mid + 1);
Вы можете заменить функцию str
на
string str(string s, int mid){
return s.substr(0, mid + 1);
}
или даже удалить функцию и заменить каждый вызов
str(strs[0],mid)
вызовом
strs[0].substr(0, mid + 1)