Handy Function

1.string 转 int

int strtoi(string& str){
    int n=atoi(&str);
    return n;
}

注意 atoi 的 原型

int atoi (const char * str);

如果只想转换 string 中单个数字,必须

int strtoi2(string& str){
    char ch=str[0];
    int n=atoi(&ch);
    return n;
}

atoi(&str[0]) 会转换整个字符串

  1. int 转换为 string
string itostr(int& n){
    stringstream ss;
    string str;
    ss << n;
    ss >> str;
    return str;
}

3.整数按位相加,即每一位上的数字加起来

// n 为进制
int getsum(int& m,int& n){
    int sum=0;
    while(m){
        sum+= m % n;
        m/=n;
    }
    return sum;
}

上面那样写当然没什么大问题,但是 getsum 函数没法这样调用

getsum(139, 10)

因为数字不是引用,必须这样

int a = 139;
int b = 10;
getsum(a, b);

我想这不是自己希望看到的,实际上,对于 int 这样的内置类型,编译器早就做了很多优化,使用引用传递基本上是多此一举。