【C++】字符串、数字相互转换
总结:
isdigit() 判断是否为十进制。
atoi() 将 char[] 转换为十进制。可掐头去尾。
to_string() int 转string
stoi 将string转int
#include <iostream> #include <sstream> using namespace std; int main() { double x; string str; cin >> x; str = to_string(x); cout << str; return 0; }
#include <iostream> #include <string> using namespace std; int main() { int x; string str; cin >> str; x = stoi(str); cout << x; return 0; }
#include <stdio.h> #include <stdlib.h> #include <ctype.h> int main () { char str[]="1776ad"; int year; if (isdigit(str[0])) { year = atoi (str); printf ("The year that followed %d was %d.\n", year, year+1); } return 0; }
相互转换 c++ 数字与字符串的相互转换 - ICEIX - 博客园 (cnblogs.com)
联动lc题目C++简单代码/双百: - 字符串转换整数 (atoi) - 力扣(LeetCode) (leetcode-cn.com)
isdigit()_C语言isdigit()详解:判断一个字符是否是十进制数字 (biancheng.net)
为什么<ctype.h>中的函数参数都是int类型 (biancheng.net)
<ctype.h> 头文件中包含了一系列与字符处理有关的函数,这些函数有一个共同特点:它们的参数都是 int 类型。例如:
- int isalnum ( int c );
- int islower ( int c );
- int isupper ( int c );
- int tolower ( int c );
- int toupper ( int c );
为什么这些函数的参数都是 int 类型?
在编写C语言程序时,我们通常使用char
或者unsigned char
来表示一个字符,而 <ctype.h> 所包含的字符处理函数的参数都是 int 类型,这是为什么呢?<ctype.h> 中的字符处理函数除了能够接收 unsigned char 范围内的“普通”字符,还必须能够接收一个无效的字符——EOF。
EOF 除了可以表示文件结尾,还可以表示一个无效的字符。也就是说,参数要接收的数值范围大于 char 所能表示的数值范围,所以参数的类型必须大于char。大于 char 的类型有 short、int、long 等,C语言标准干脆规定就用 int 吧,这样绰绰有余,弹性很大。
char 可以隐式地转换为 int,我们在给字符处理函数传参时不需要再进行显式的(强制的)类型转换了。
关于 char 以外的字符
C语言标准规定,<ctype.h> 中的字符处理函数至少要能够处理 unsigned char 范围以内的字符,范围以外的字符不做要求,各个组织在实现标准库时可以自由发挥。这就导致不同的标准库之间存在差异,例如在 Visual Studio 中处理 unsigned char 以外的字符会导致断言失败,程序终止执行;而在 Xcode(基于LLVM编译器)中可以顺利处理 unsigned char 以外的字符,比如汉字
"中国我爱你!"
。
在 Debug 模式下断言才会生效。为了让代码更有兼容性,建议使用 <wctype.h> 中的宽字符处理函数来处理 unsigned char 以外的字符。
#include <stdio.h> #include <stdlib.h> #include <ctype.h> int main () { char str[]="1776ad"; int year; if (isdigit(str[0])) { year = atoi (str); printf ("The year that followed %d was %d.\n", year, year+1); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异