我有一串数字,例如 \'123456789\',我需要提取每个数字以用于计算。我当然可以通过索引访问每个字符,但如何将其转换为 int?我已经
我有一串数字,例如 \'123456789\',我需要提取每个数字以用于计算。我当然可以通过索引访问每个字符,但如何将其转换为 int?
我研究过 atoi(),但它接受一个字符串作为参数。因此我必须将每个字符转换为字符串,然后对其调用 atoi。有没有更好的方法?
您可以利用数字的字符编码都是按从 48(代表“0”)到 57(代表“9”)的顺序排列的事实。这适用于 ASCII、UTF-x 和几乎所有其他编码( 有关更多信息,请参阅下面的注释 )。
因此,任何数字的整数值都是该数字减去“0”(或 48)。
char c = '1';
int i = c - '0'; // i is now equal to 1, not '1'
等同于
char c = '1';
int i = c - 48; // i is now equal to 1, not '1'
然而我发现第一个 c - '0'
更具可读性。