/************************************************************************/
/* 8、请编写能直接实现 int atoi(const char * pstr)函数功能的代码 */
/************************************************************************/
//考虑全局变量返回结果是否有效,和大数问题
bool isToIntValid =true;
int strToInt(const char *str)
{long long num = 0;int mark = (*str== '-' ? -1: 1);long long upperBound = numeric_limits<int>::max();;if(mark == -1)++upperBound;const char* temp = (*str == '+' || *str == '-') ? str + 1: str;for( ;*temp >= '0' && *temp <= '9'; ++temp){num = num * 10 + *temp - '0'; if(num > upperBound){//越界,atoi中对于越界直接取最值isToIntValid = false;num = upperBound;break;}}if(*temp !='\0' || *str == '0')isToIntValid = false;return static_cast<int>(mark * num);
}
void testOfstrToInt()
{assert(atoi("+1234") == strToInt("+1234"));assert(atoi("-1234") == strToInt("-1234"));assert(atoi("+aaa234") == strToInt("+aaa234"));assert(atoi("aaa1234") == strToInt("aaa1234"));assert(atoi("-1234a") == strToInt("-1234a"));assert(atoi("1234") == strToInt("1234"));assert(atoi("12a34") == strToInt("12a34"));assert(atoi("aaaa") == strToInt("aaaa"));assert(atoi("0123") == strToInt("0123"));//大数assert(atoi("123456789012345123456") == strToInt("123456789012345123456"));assert(atoi("-123456789012345123456") == strToInt("-123456789012345123456"));
}
详细解决方案
8、请编写能直接实现 int atoi(const char * pstr)函数功能的代码
热度:62 发布时间:2024-01-05 04:17:04.0
相关解决方案
- 形参类型是 int ,按理只能接受 数值 或 char ,为什么下面传和个 String 也行?解决办法
- JNI char*转jstring乱码有关问题
- 怎么使用JAVA调用C++编写的Dll函数,Char *指针
- char character的差异
- VC++中,CString year;int Year=atoi("year");该如何解决
- wchar_t *”转换为“const std:string ?解决思路
- 如何把unsigned char[]插入数据库
- 一个关于“不能将参数 1 从“char [80]”转换为“System:Object ^”的有关问题
- wchar_t *”变换为“const std:string
- 托管代码数据怎么转非托管数据?array<Byte> 怎样转为 char *
- VC++中,CString year;int Year=atoi("year");解决方法
- vc++.net中的有关问题( error C2440: 'type cast' : cannot convert from 'CString' to 'const char *')
- 请问,报不能将“const char [7]”转换为“LPCTSTR”
- main(int, char* argv[]) 跟 main(int, wchar* argv[])
- 如何才能把char * 类型的数据转换成unsigned char _gc[]
- La conversión del tipo de datos char a smalldatetime generó un valor smalldateti,该如何解决
- The conversion of a char data type to a datetime data type resulted in an out-of-range datetime解决方案
- 与“string.Split(params char[])”最匹配的重载方法具有一些无效参数,该怎么解决
- char[] aaa = ""ToCharArray;为什么报错?想用""来分割一个字符串如何做
- char *转换为TDes, TDesC啊解决方法
- 假如在文件aaa.c中定义了 extern char sender[]={0xAA,0xBB,0xCC};而在文件bbb.c要引用sender[]。貌似在bbb解决办法
- 假若在文件aaa.c中定义了 extern char sender[]={0xAA,0xBB,0xCC};而在文件bbb.c要引用sender[]。貌似在bbb
- C++中的char*b=new char[10];在反汇编里的代码如上,麻烦大神来帮忙解释上反汇编代码中的意思
- char* instIdList[] = {"rb1305""m1309"}; 如何判断里面有几个字符串
- [求助]const int *p;的声明问题
- char 型和int详解?
- [求助]char a []="CHINA"
- 谁能教下FAR CHAR * 和CHAR * 有什么区别??
- [讨论]char* a = "abc" 和 char a[] = "abc" 之间的区别 ...
- 关于int main(int argc, char *argv[])的问题