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)
相关推荐
Hhy_110739 分钟前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透
c语言·开发语言·c++·学习·visual studio
青少儿编程课堂1 小时前
蓝桥杯青少组图形化省考报名倒计时·全国青少年信息素养大赛·电子学会图形化考级:校园黑白棋人机对战解析
c++·python·算法·bfs·信息学竞赛
YSL0701241 小时前
C++基础
开发语言·c++
eggwyw2 小时前
关于C++为什么不加入垃圾回收机制解析
开发语言·c++
曦樂~12 小时前
Cpp面筋
c语言·c++
道尔柯南12 小时前
C++ string 类详解:从常用接口到深拷贝,彻底掌握字符串处理
android·java·c++
十二15 小时前
【洛谷题解】P1083 [NOIP 2012 提高组] 借教室(二分答案 + 差分)
数据结构·c++·算法·蓝桥杯
D e re k ZH17 小时前
C++ 从零入门(一):基础语法与程序结构
数据结构·c++·算法
zjxtxdy19 小时前
C++面向对象程序开发-类与对象
开发语言·c++
東隅已逝,桑榆非晚20 小时前
算法6. 双指针法-查找总价格为目标的两个商品
c++·学习·算法