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)
相关推荐
2401_874732531 小时前
模板编译期排序算法
开发语言·c++·算法
weixin_421922691 小时前
C++与Node.js集成
开发语言·c++·算法
j_xxx404_2 小时前
力扣--分治(归并排序)算法题I:排序数组,交易逆序对的总数
数据结构·c++·算法·leetcode·排序算法
阳光永恒7362 小时前
C++编程全套学习资料免费分享 | 从零基础到进阶(含视频课/PPT课件/源码/项目实战)
c++·学习·编程学习·免费资料·零基础学c++·c++资料
楼田莉子2 小时前
C++高性能并发内存池:三种Cache的设计及其内存申请释放
c++·后端·链表·哈希算法·visual studio
hongtianzai2 小时前
Laravel6.x重磅发布:LTS版本新特性全解析
c语言·开发语言·php·laravel
Flamingˢ2 小时前
基于ARM的裸机程序设计和开发(三):C编程基础与Zynq裸机开发常用方法
c语言·arm开发·单片机
sprite_雪碧2 小时前
排版类问题(机试高频)
c语言·数据结构·算法
暮冬-  Gentle°2 小时前
设计模式在C++中的实现
开发语言·c++·算法