1.将字符串转化为整数问题(C++)
仿照atoi实现代码:
// 仿照atoi函数实现字符串转化为整形数据问题 // #include "stdafx.h" enum MyEnum { eValid = 0,//合法 unValid //不合法 }; int mState = eValid;//定义全局变量,输入非法时设置该全局变量; //则通过检查该全局变量就能够判断输入是否合法; //实现字符串转化为整形数据atoi问题 int StrToInt(char* str) { //变量初始化 int number = 0; mState = unValid; //判断字符串是否为空 if (str != nullptr) { /********判断字符是否合法*********/ //首先判断第一位是否为“+”或“-”号 bool minus = false;//正负标志 if (*str == '+') { ++str; } else if (*str == '-') { ++str; minus = true; } //若两者都不是,则不进行++str; /*********处理字符转换**********/ //判断是否为合法字符 while ((*str >= '0')&&(*str <= '9')) { number = number * 10 + (*str - '0'); ++str; } //判断是否为正常循环完毕 if (*str == '\0') { //处理数据 mState = eValid; if (minus) { number = 0 - number;//转换为负数 } } else //字符串有错情况 { number = 0; } } return number; } int _tmain(int argc, _TCHAR* argv[]) { //测试 printf("%d\n", StrToInt("+23")); printf("%d\n", StrToInt("-23")); printf("%d\n", StrToInt("23")); printf("%d\n", StrToInt("a23")); return 0; }
时间: 2024-11-07 11:32:07