C++ 中如何将 char 转换为 int

2025 年 5 月 16 日 | 6 分钟阅读

在 C++ 中,char 是一种数据类型,表示单个字符,例如 'A' 或 '5'。有时,我们可能希望将此字符更改为 int。这在使用数字或我们想知道字符的 ASCII 值时是一个常见的任务。这可以通过多种方法完成,例如类型转换、数学运算和标准库函数。

Convert char to int in C++

有几种方法可以帮助在 C++ 中将 char 转换为 int。其中一些如下:

  • 使用类型转换将 char 转换为 int
  • 使用字符的 ASCII 值
  • 将数字字符转换为其整数值
  • 对字符数组使用 atoi()
  • 对 std::string 使用 stoi()
  • 使用 strtol() 将字符数组转换为整数

现在,我们将逐一讨论这些方法。

1) 使用类型转换将 char 转换为 int

在 C++ 中,类型转换是一种手动告诉编译器将一种类型的变量视为另一种类型的方法。当我们对 char 进行类型转换为 int 时,我们会得到该字符的 ASCII 值。

语法

使用 C 风格

它具有以下语法:

或使用 C++ 风格

使用类型转换将 char 转换为 int 的 C++ 示例

让我们举一个例子来说明如何在 C++ 中使用类型转换将 char 转换为 int。

示例

编译并运行

输出

Using C-style cast: ASCII value of 'B' is 66
Using static_cast:  ASCII value of 'B' is 66

说明

在此示例中,我们演示了如何使用 C 风格转换 ((int)ch) 和现代 C++ 转换 (static_cast<int>(ch)) 将字符转换为其 ASCII 整数值。两种方法都返回字符 'B' 的 ASCII 值,即 66。

2) 字符的 ASCII 值

在 C++ 中,每个字符都有一个 ASCII 值(计算机中表示字符的数字)。在 C++ 中,每个字符实际上都以基于 ASCII(美国信息交换标准代码)系统的数字存储。

例如

  • 'A' -> 65
  • 'B' -> 66
  • '0' -> 48
  • '9' -> 57

因此,当我们把 char 转换为 int 时,我们实际上得到的是它的 ASCII 值。

语法

它具有以下语法:

C++ 字符 ASCII 值示例

让我们举一个例子来说明如何在 C++ 中使用字符的 ASCII 值将 char 转换为 int。

示例

编译并运行

输出

The ASCII value of A is 65

说明

在此示例中,我们将字符 ch 赋给一个整数变量 asciiValue。C++ 会自动将 char 转换为其 ASCII 值。

3) 将数字字符转换为其整数值

'1'、'2'、'3' 等字符与整数 1、2、3 不同。
它们以字符形式存储,我们需要正确地将它们转换为数字才能使用它们。如果字符是像 '5' 这样的数字,并且我们想要得到实际的数字 5,而不是 ASCII 值,我们可以从它中减去 '0'。

语法

它具有以下语法:

C++ 将数字字符转换为 int 的示例

让我们举一个例子来说明如何在 C++ 中将数字字符转换为 int。

示例

编译并运行

输出

The integer value is 7

说明

在此示例中,我们通过从数字字符 ('7') 中减去字符 '0',将其转换为对应的整数值。由于字符在内部以 ASCII 值存储,此操作会给出实际的数字值。

为什么会这样?

在 ASCII 中,'0' 是 48,'1' 是 49,...,'9' 是 57。

所以,'7' - '0' = 55 - 48 = 7。

4) 对字符数组使用 atoi()

如果我们的数字以字符串或字符数组(如 "123")的形式存储,我们可以使用 atoi() 函数。

语法

它具有以下语法:

使用 atoi() 函数将 char 转换为 int 的 C++ 示例

让我们举一个例子来说明如何在 C++ 中使用 atoi() 函数将 char 转换为 int。

示例

编译并运行

输出

Converted number is 123

说明

在此示例中,我们使用 <cstdlib> 头文件中的 atoi() 函数将 C 风格字符串 ("123") 转换为整数。之后,将结果整数 123 打印到控制台。

注意:atoi() 函数仅适用于字符数组(C 风格字符串),不适用于单个 char。

5) 对 std::string 使用 stoi()

如果使用 std::string 而不是字符数组,请使用 stoi() 函数。

语法

它具有以下语法:

使用 stoi() 函数将 char 转换为 int 的 C++ 示例

让我们举一个例子来说明如何在 C++ 中使用 stoi() 函数将 char 转换为 int。

示例

编译并运行

输出

Converted number is 456

说明

在此示例中,我们使用 <string> 头文件中的 stoi() 函数将 std::string ("456") 转换为整数。之后,将转换后的整数值 456 打印到控制台。

6) 使用 strtol() 将字符数组转换为整数

strtol() 代表字符串到长整型。它是 C 标准库中的一个函数,用于将 C 风格字符串(字符数组)转换为长整型。它比 atoi() 更强大,因为:

  • 它允许我们检查错误。
  • 我们可以选择数字系统(如十进制、十六进制、八进制)。
  • 我们可以处理带有额外字符的字符串。

语法

它具有以下语法:

  • str:它表示输入的 C 字符串。
  • endptr:它表示指向第一个无效字符的指针(如果不需要,可以为 nullptr)。
  • base:它表示数字系统(十进制为 10,十六进制为 16 等)。

使用 strtol() 将 char 转换为 int 的 C++ 示例

让我们举一个例子来说明如何在 C++ 中使用 strtol() 函数将 char 转换为 int。

示例

编译并运行

输出

Converted number: 123
Remaining string: abc

说明

在此示例中,我们使用 <cstdlib> 中的 strtol() 函数将 C 风格字符串 "123abc" 的起始数字部分转换为长整型。之后,endptr 指向未转换的字符串剩余部分 ("abc")。

结论

总之,一旦我们知道 ASCII 值和数字字符之间的区别,在 C++ 中将 char 转换为 int 就很容易了。无论我们需要 ASCII 值,想提取数字,还是需要将整个字符串转换为整数,C++ 都为我们提供了多种方法。