C/C++ 中,将 char 类型转换为 int 非常简单。char 是一种整数类型,通常是 1 字节,因此可以直接进行类型转换。char 转换为 int 很直观,并且 C/C++ 中提供了隐式转换和显式转换的方式。如有特定需求(比如字符编码或负数处理),可能需要更细致的控制。将 char 转换为 int 可以通过隐式类型转换(例如,将 char 赋给 int 变量)、使用 atoi() 函数处理数字字符串,或通过减去 '0' 来转换单个数字字符。这些方法可以高效地获取字符对应的数值。

1、 C 中将 char 转换为 int

在 C 中,char 类型通常用于存储单个字符,可以隐式地转换为 int。这种转换会给出字符的 ASCII(或 Unicode)值。如有字符 'A',它会被转换为对应的 ASCII 值 65

#include <stdio.h>

int main() {
    char ch = 'A';
    int num = ch;  // 从 char 到 int 的隐式转换
    printf("字符 '%c' 的整数值是 %d\n", ch, num);  // 输出: 65
    return 0;
}

2、使用 atoi() 将字符字符串转换为整数

如想将一串字符(例如 "123")转换为整数,可以使用 stdlib.h 库中的 atoi() 函数。

#include <stdio.h>
#include <stdlib.h>

int main() {
    char str[] = "123";
    int num = atoi(str);  // 将字符串 "123" 转换为整数 123
    printf("字符串 \"%s\" 的整数值是 %d\n", str, num);  // 输出: 123
    return 0;
}

3、 使用 ASCII 值将 char 转换为 int

如想得到字符本身的数值(即它的 ASCII 值),可以简单地将 char 用在算术运算中。如减去字符 '0' 可以得到相应的整数值。

#include <stdio.h>

int main() {
    char digit = '5';
    int num = digit - '0';  // 将字符 '5' 转换为整数 5
    printf("字符 '%c' 的整数值是 %d\n", digit, num);  // 输出: 5
    return 0;
}

4、C++ 中将单个 char 转换为 int

C++ 中,方法与 C 几乎相同。如处理的是单个字符,可以直接将 char 类型赋给 int 变量,它会给出字符的 ASCII 值。

#include<iostream>
using namespace std;


int main() {
    char ch = 'A';
    int num = ch;  // 从 char 到 int 的隐式转换
    cout << "字符 '" << ch << "' 的整数值是 " << num << endl;  // 输出: 65
    return 0;
}

5、字符数组到整数的转换

有时可能需要将一个字符数组(例如一个表示数字的字符串)转换为整数。在这种情况下,可以使用标准库函数 atoi 或 C++11 的 std::stoi

1)使用atoi

#include <iostream>
#include <cstdlib>  // for atoi
using namespace std;

int main() {
    const char* str = "1234";  // 字符串 "1234"
    
    // 使用 atoi 将字符数组转换为整数
    int number = atoi(str);
    
    cout << "The integer value is: " << number << endl;
    return 0;
}

2)使用stoi

#include <iostream>
#include <string>  // for stoi
using namespace std;

int main() {
    string str = "5678";  // 字符串 "5678"
    
    // 使用 std::stoi 将字符串转换为整数
    int number = stoi(str);
    
    cout << "The integer value is: " << number << endl;
    return 0;
}

6、常见错误和注意事项

如果字符表示的是非数字字符(如字母或符号),直接减去 '0' 可能导致意外结果。在此情况下,最好检查字符是否是合法数字字符。atoistd::stoi:这些函数假定输入字符串能够正确表示一个整数。如果字符串包含无效字符(如字母或符号),atoi 会返回 0,std::stoi 会抛出异常(std::invalid_argumentstd::out_of_range)。

#include <iostream>
#include <string>  // for stoi
using namespace std;

int main() {
    char ch = 'a';  // 非数字字符

    // 判断字符是否是数字
    if (ch >= '0' && ch <= '9') {
        int number = ch - '0';
        cout << "The integer value is: " << number << endl;
    } else {
        cout << "Invalid character for conversion!" << endl;
    }

    return 0;
}

推荐文档