字符串转数字
// ConsoleA.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<string>
using namespace std;
//ascii 0-9:48~57
//A :65
//a:97
//空格不等于\0
//单引号的空格和双引号的空格不一样,单引号的空格是字符,双引号的空格是一个字符串(里边有一个空格一个\0)
//定义一个函数,实现字符串转换成整数
//• 在转换结果溢出时返回特定值,这里是最大 / 最小整数
//• 允许数字以正负号(+-)开头
//• 能够排除首部的空格,从第一个非空字符开始计算
//• 遇到非法字符便停止转换,返回当前已经转换的值,如果开头就是非 法字符则返回0
int convert(string str ) { if (str.empty())//空字符串 "" { return 0; } int sign; const char* temp = str.c_str(); int len = strlen(temp);//遇到\0结束; int64_t sum = 0;//这样才能装得下,比MAX_INT,MIN_INT大的数,才能判断溢出 int i = 0; while (temp[i] == ' '&& i < len) { i++; } if (temp[i] == '+' || temp[i] == '-') { sign = temp[i] == '+' ? 1 : -1; i++; } while (temp[i] >= '0' &&temp[i] <= '9' && i < len) { sum = sum * 10 +( temp[i]-'0'); if (sum > INT32_MAX || sum < INT32_MIN) { return sign == 1 ? INT32_MAX : INT32_MIN; } i++; } return (int)(sum*sign); } int main() { string str = " -1239shdkh99"; int result = convert(str); printf("result:%d",result); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2020-12-30 fseek函数