如何阻止我的函数返回0?

时间:2015-01-28 02:35:37

标签: c++ string capitalization

我知道函数必须返回一个整数,但在其中,我以大写字母逐字打印,并且还打印出我被迫返回的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;
}

3 个答案:

答案 0 :(得分:1)

改变这个:

    cout << capital(name) << endl;

到此:

    capital(name);
    cout << endl;

答案 1 :(得分: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;
}

答案 2 :(得分:0)

您绝对可以将函数的返回类型更改为void。您的问题是您如何在main方法中调用该函数。

您的capital()方法已在使用cout,因此在main()中,请更改:

 cout << capital(name) << endl;

为:

capital(name) << endl;