почему я получаю случайные результаты при увеличении int

Я должен написать функцию, которая просматривает строку, находит все имеющиеся заглавные буквы и делает их строчными. Я решил добавить немного кода, чтобы показать, какие буквы были найдены и сколько было найдено. Хотя для каждой компиляции значение ‘cnt’ дает нелепые результаты.

#include <iostream>
#include <vector>
using namespace std;

int upper(string s) {
int cnt;

vector<char> v{};
for (auto& i : s) {
if (isupper(i)) {
v.push_back(i);
i = tolower(i);
++cnt;
}
}
cout << "new string is '" << s << "'\n"<< "number of capitals found is " << cnt << "\n"<< "letters found were ";
for (auto l : v)
cout << l << " ";
return 0;
}

int main() {
string l = "This IS a TeSt";
upper(l);
}

Я уверен, что я сделал что-то не так с циклом, но какова бы ни была проблема, я не могу найти это.

-2

Решение

Переменная cnt никогда не инициализируется при использовании, изменить

int cnt;

в

int cnt = 0;
3

Другие решения

Вы не смогли инициализировать локальную переменную cnt, Использование неинициализированного значения вызывает неопределенное поведение, при котором в основном может произойти все что угодно.

использование int cnt=0; и, пожалуйста, включите все ваши предупреждения компилятора.

3

По вопросам рекламы [email protected]