c++代码复用率如何增加

我是c++新手,写了两个字符串首字母大小写转变的函数,参数分别为char和string,做的重载,但代码还是有些重复,希望有什么方法可以压缩成一个函数。

int capitalize(string *str)
{
    string &s = *str;
    if (s[0] == '\0')
    {
        return 1;

    }
    else if(!((s[0] >65&&s[0] <90)||(s[0]>97&& s[0]<122)))
    {
       
        return 2;
        
    }
    else
    {
        s[0] = s[0] > 90 ? s[0] - 32 : s[0] + 32;
        return 0;

    }

}
int capitalize(char *s)
{
        if (s[0] == '\0')
        {
            return 1;

        }
        else if (!((s[0] > 65 && s[0] < 90) || (s[0] > 97 && s[0] < 122)))
        {

            return 2;

        }
        else
        {
            s[0] = s[0] > 90 ? s[0] - 32 : s[0] + 32;
            return 0;

        }


}
int main()
{
    char s[] = "p3456we";
    int i= capitalize(s);
    
    cout << i << endl;
    cout << s << endl;
    return 0;
}

 

#include<iostream>
using namespace std;
template <class Type>
int capitalize(Type& s)
{
    if (s[0] == '\0')
    {
        return 1;
 
    }
    else if(!((s[0] >65&&s[0] <90)||(s[0]>97&& s[0]<122)))
    {
       
        return 2;
        
    }
    else
    {
        s[0] = s[0] > 90 ? s[0] - 32 : s[0] + 32;
        return 0;
 
    }
}
int main()
{
    char s[] = "p3456we";
    string st(s);
    int i= capitalize(st);
    
    cout << i << endl;
    cout << s << endl;
    return 0;
}

 

你把处理一个字符的流程抽出来写一个函数 int captalize(char);   其他的情况就调用这个函数, 例如 captalize(s[0]) 

你可以看看泛型编程的部分 template,我推荐你看侯捷的视频

你可以看看泛型编程的部分 template,我推荐你看侯捷的视频