du26548 2021-03-25 10:50 采纳率: 75%
浏览 58
已采纳

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;
}
  • 写回答

4条回答 默认 最新

  • 502203305 2021-03-25 11:01
    关注
    #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;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法