Я знаю, что функция должна возвращать целое число, но в ней я печатаю букву за буквой заглавными буквами, и она также печатает 0, который я вынужден вернуть. Я пробовал ссылаться void capital(string& _name)
но это просто дало мне массу ошибок. Я думаю, что мне нужно вернуть что-то внутри for
Но у меня больше нет идей. Что я могу сделать?
int capital(string& _name){
locale loc;
for(std::string::size_type i = 0; i < _name.length(); i++){
cout << std::toupper(_name[i], loc);
}
return 0;
}
int main(){
string name = "robbie";
cout << capital(name) << endl;
system("pause");
return 0;
}
Изменить это:
cout << capital(name) << endl;
к этому:
capital(name);
cout << endl;
Сделайте так, чтобы он возвращал строку вместо этого. Обратите внимание, что я не выводить строку внутри capital
Просто создайте новую заглавную и верните ее, но в остальном логика очень похожа на исходную версию.
#include <string>
#include <iostream>
std::string capital(const std::string& _name){
std::locale loc;
std::string name_copy = _name;
for(std::string::size_type i = 0; i < name_copy.length(); i++){
name_copy[i] = std::toupper(name_copy[i], loc);
}
return name_copy;
}
int main(){
std::string name = "robbie";
std::cout << capital(name) << std::endl;
return 0;
}
Вы определенно можете изменить тип возвращаемого значения функции на void. Ваша проблема в том, как вы вызываете функцию в методе main.
Ваш capital()
метод уже делает cout
так в вашем main()
, менять:
cout << capital(name) << endl;
чтобы:
capital(name) << endl;