劍指offer基礎回顧1 字符串轉爲整數

1 指針是否爲空

2 字符串是否爲空字符串

3 字符串是否有正負號

4 字符串轉換的數字是否會整數溢出

5 設置全局變量,驗證返回0是因爲字符串爲“0”還是因爲錯誤輸入

【劍指offer】字符串轉換爲數字,C++實現

把字符串轉換成整數

enum { kValid, kInvalid }; 
int g_nStatus = kValid; 

int StrToInt(const char* cstr )
{
	long long num = 0;
	// 判斷是否是空指針和空字符串""
	if ((cstr != NULL) && (*cstr != '\0'))
	{
		// 處理符號位
		int minus = 1;
		if (*cstr == '-')
		{
			minus = -1;
			cstr++;
		}
		else if (*cstr == '+')
		{
			minus = 1;
			cstr++;
		}

		while (*cstr != '\0')
		{
			if (*cstr > '0' && *cstr < '9')
			{
				g_nStatus = kValid;           
				num = num * 10 + (*cstr - '0');  
				cstr++;

				// 數據上下溢出
				if (((minus > 0) && (num > 0x7FFFFFFF)) || ((minus < 0) && (num > 0x80000000)))
				{
					g_nStatus = kInvalid; 
					num = 0;
					break;
				}
			}
			else
			{
				g_nStatus = kInvalid;
				num = 0;
				break;
			}
		}
		if (g_nStatus == kValid)
			num = num * minus;

	}
	std::cout << (int)num << endl;
	return (int)num;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章