
前言
昨天开始刷PAT甲级,目标打卡40天。研(chao)究(xi)大佬的代码往往有多心得,本人就在知乎中分享一下。
C++字符串'0'
PAT甲级1001的题目:

题目的大意是计算两个数字之和然后输出时希望每三位用‘,’分隔。
数字a和b的范围在
ans.push_back('0'+abs(sum%10));
利用C++中string类的函数push_back组成字符串,使用'0'+数字的方式将数字转化为字符。这里边的内容来源于ASCII码。

加上'0'的作用其实就是加上'0'的ASCII码值,可以方便的用来转换大小写或者数字和和字符。
当然我还有-'0'的方法[1],这种语法问题吧说简单它不那么简单,毕竟不好理解;但说难吧也不难,其实就是让代码更简洁更有逼格的途径而已。
我们可以定义这样一个函数:
#include <cstdio>
#include <iostream>
using namespace std;
int change_chr_num( char x )
{
return x - '0';
}
int main()
{
char x;
cin >> x;
cout << change_chr_num(x) + 1;
return 0;
}
/*
Input: 9
Output: 10
*/
输入的是字符串类型下的9,输出的是计算后的整型10。同时这个语句等价于 return x-48,也就是说直接减去ACSII值48效果也是一样的。
所以说,使用'0'的做法只是为了方便字符和数字之间转化,总的来说作用一般。
参考
- ^参考资料 https://www.cnblogs.com/GuanHuaEdison/p/7029371.html