C/C++ 中,整数 ↔ 字符、整数 ↔ 字符串

在 C/C++ 中,整数 ↔ 字符、整数 ↔ 字符串 是高频操作,核心区别在于:

  • 字符:单个 ASCII 码(如 '5' )
  • 字符串:以 \0 结尾的字符数组(如 "123" )

下面给你最清晰、可直接用的转换方法(含原理、代码、注意事项)。

一、整数 ↔ 字符(单个数字)

1. 整数 → 字符(如 5 → '5')

原理:ASCII 码中, '0' 是 48,数字字符连续。

c 复制代码
int num = 5;
char ch = num + '0';  // 5 + 48 = 53 → '5'

2. 字符 → 整数(如 '5' → 5)

c 复制代码
char ch = '5';
int num = ch - '0';  // 53 - 48 = 5

注意

  • 只能处理 0~9 的单个数字
  • 必须确保字符是数字,否则结果错误

二、整数 ↔ 字符串(多位数字)

*1. 整数 → 字符串(int → char)**

方法1:sprintf(通用,C/C++ 都能用)

c 复制代码
int num = 12345;
char str[20];
sprintf(str, "%d", num);  // str = "12345"

方法2:itoa(非标准,部分编译器支持)

c 复制代码
char str[20];
itoa(num, str, 10);  // 10 表示十进制

方法3:C++11 to_string(推荐)

cpp 复制代码
int num = 123;
string s = to_string(num);

*2. 字符串 → 整数(char → int)**

方法1:atoi(C 标准,简单)

c 复制代码
char str[] = "12345";
int num = atoi(str);  // 12345

方法2:sscanf(更安全,可处理格式)

c 复制代码
char str[] = "123";
int num;
sscanf(str, "%d", &num);

方法3:C++ stoi(推荐,支持异常)

cpp 复制代码
string s = "123";
int num = stoi(s);

三、负整数转换

整数 → 字符串

c 复制代码
int num = -123;
char str[20];
sprintf(str, "%d", num);  // "-123"

字符串 → 整数

c 复制代码
char str[] = "-456";
int num = atoi(str);  // -456

四、十六进制/二进制转换(拓展)

整数 → 十六进制字符串

c 复制代码
int num = 0x1A;
char str[20];
sprintf(str, "%X", num);  // "1A"

十六进制字符串 → 整数

c 复制代码
char str[] = "1A";
int num;
sscanf(str, "%x", &num);  // 26

五、常见坑(必看)

  1. 缓冲区溢出:字符串数组要足够大
  2. 非数字字符: atoi 遇到非数字会停止
  3. 负数处理: - 只能在开头
  4. C++ 优先用 to_string / stoi ,更安全

六、速查表(直接背)

转换方向 写法(C) 写法(C++)
int → char ch = num + '0' 同上(ch = num + '0'
char → int num = ch - '0' 同上(num = ch - '0'
int → string sprintf(str, "%d", num) to_string(num)
string → int atoi(str) stoi(str)
相关推荐
晓蛋1 天前
c语言指的是什么意思
c语言·编译器·编程开发·集成开发环境·程序实例
倒头就睡的小比特1 天前
算法竞赛C++常用的STL
c++·算法
weilx12341 天前
C++笔记-文件IO-<fcntl.h>
c++
傲世仙尊1 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
牵猫散步的鱼儿1 天前
重载、重写(覆盖)、重定义区别
c语言
phltxy1 天前
C 语言指针:从内存地址到灵活的数据访问
c语言
Smileyqp沛沛1 天前
前端?C++ ?较大差异基础罗列
c++·基础·前端转c++
C语言小火车1 天前
C/C++ 为什么需要编译器?
开发语言·c++
phltxy1 天前
C 语言中的数据存储:从类型到二进制位
c语言
旖旎夜光1 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控