文字列を通過し、存在する大文字を見つけて小文字にする関数を作成する必要があります。見つかった文字とその数を示すコードを少し追加することにしました。各コンパイルでは、「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);
}
ループで何か間違ったことをしたに違いないと確信していますが、問題が何であれ、それを見つけることができません。