Как мне остановить, чтобы моя функция не возвращала 0?

Я знаю, что функция должна возвращать целое число, но в ней я печатаю букву за буквой заглавными буквами, и она также печатает 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;
}

-1

Решение

Изменить это:

    cout << capital(name) << endl;

к этому:

    capital(name);
cout << endl;
1

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

Сделайте так, чтобы он возвращал строку вместо этого. Обратите внимание, что я не выводить строку внутри 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;
}
1

Вы определенно можете изменить тип возвращаемого значения функции на void. Ваша проблема в том, как вы вызываете функцию в методе main.

Ваш capital() метод уже делает coutтак в вашем main(), менять:

 cout << capital(name) << endl;

чтобы:

capital(name) << endl;
0