Я должен написать функцию, которая просматривает строку, находит все имеющиеся заглавные буквы и делает их строчными. Я решил добавить немного кода, чтобы показать, какие буквы были найдены и сколько было найдено. Хотя для каждой компиляции значение ‘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);
}
Я уверен, что я сделал что-то не так с циклом, но какова бы ни была проблема, я не могу найти это.
Переменная cnt
никогда не инициализируется при использовании, изменить
int cnt;
в
int cnt = 0;
Вы не смогли инициализировать локальную переменную cnt
, Использование неинициализированного значения вызывает неопределенное поведение, при котором в основном может произойти все что угодно.
использование int cnt=0;
и, пожалуйста, включите все ваши предупреждения компилятора.