C++(atoi())
atoi()
是 C++ 标准库中的一个函数,用于将 C 风格字符串转换为整数。atoi
是 "ASCII to Integer" 的缩写,它可以将包含数字的字符串解析为整数值。
1. 函数
int atoi(const char *str);
1.1 参数
str
:一个 C 风格的字符串,通常是const char*
类型,表示待转换的数字字符串。该字符串必须以 null 结尾\0
。
1.2 返回值
- 函数返回转换后的整数值。
- 如果字符串中不包含有效的数字或字符串的开头不是数字,
atoi
将返回0
。
1.3 注意事项
atoi
不能处理超出int
类型范围的值。如果输入的字符串表示的数字超出了int
类型的范围,行为是未定义的。atoi
不提供错误检测能力。例如,如果字符串包含非数字字符,atoi
将忽略这些字符,并从字符串的开头部分进行转换。
2. 示例
#include <iostream>
#include <cstdlib> // 包含 atoi() 函数
int main() {
const char* str1 = "1234";
const char* str2 = "56abc";
const char* str3 = "abc123";
int num1 = atoi(str1); // 转换为整数 1234
int num2 = atoi(str2); // 转换为整数 56,遇到非数字字符后停止
int num3 = atoi(str3); // 转换为整数 0,开头没有数字
std::cout << "num1: " << num1 << std::endl;
std::cout << "num2: " << num2 << std::endl;
std::cout << "num3: " << num3 << std::endl;
return 0;
}
输出:
num1: 1234
num2: 56
num3: 0
3. atoi
的局限性
- 没有错误处理:不能检测输入错误,比如无法区分输入的字符串不含数字与数字部分超出
int
的范围(两种情况下返回值都是 0)。 - 性能问题:
atoi
无法处理空白字符、符号、或进制转换等复杂场景。
4. 推荐替代函数
C++11 标准后,atoi
常被 std::stoi
取代。std::stoi
提供了错误检测并且支持更多特性:
int num = std::stoi("123");
std::stoi
抛出std::invalid_argument
异常,如果无法转换为整数,或抛出std::out_of_range
异常,如果数字超出范围。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2021-08-23 数据降维