📌  相关文章
📜  str[i] - '0' - C++ (1)

📅  最后修改于: 2023-12-03 15:35:09.802000             🧑  作者: Mango

C++ 中的 str[i] - '0'

在 C++ 中,我们可以通过 str[i] - '0' 来将一个字符转换为对应的数字。这在处理字符串中的数字时非常有用。

使用方法

假设我们有一个字符串 str,其中包含一些数字字符,我们可以按照以下方式将它们转换为数字:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str = "12345";
    int num = 0;
    for (int i = 0; i < str.length(); i++)
    {
        num = num * 10 + str[i] - '0';
    }
    cout << num << endl; // 输出 12345
    return 0;
}

上述示例中,我们使用了一个 for 循环,每次将字符串中的一个字符转换为数字,并加到 num 中,最终得到了正确的结果。这个方法适用于任何整数,不论它们的位数有多少。

解析

为什么 str[i] - '0' 可以将一个数字字符转换为数字呢?

这是因为字符在计算机中是以 ASCII 码的形式存储的。例如,字符 '0' 的 ASCII 码为 48,而字符 '1' 的 ASCII 码为 49,以此类推。

因此,我们可以通过将字符的 ASCII 码减去字符 '0' 的 ASCII 码来得到对应的数字。例如:

'1' - '0' = 49 - 48 = 1
'2' - '0' = 50 - 48 = 2
'3' - '0' = 51 - 48 = 3
...
'9' - '0' = 57 - 48 = 9
注意事项

虽然 str[i] - '0' 可以很方便地将一个字符转换为数字,但是我们需要注意以下几点:

  1. 字符必须是数字字符,否则结果是不可预测的。
  2. 数字字符的范围应该在 '0''9' 之间,否则结果也是不可预测的。
  3. 转换后的数字可能会超出 int 类型的范围,因此在进行转换时需要注意数据类型。
总结

str[i] - '0' 可以很方便地将一个数字字符转换为数字。但是我们需要注意转换时可能出现的错误,以保证程序的正确性。