将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

// test20.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<vector>
#include<string>
#include<queue>
#include<stack>
#include<cstring>
#include<string.h>
#include<deque>

using namespace std;

class Solution {
public:
	int StrToInt(string str) {
		//如果字符串为空,返回-1
		if (str == "")return 0;
		int num=0;//要输出的数字
		int flag=1;//符号位,0表示负数,1表示正数
		cout << str.find_first_not_of("1234567890+-") << endl;
		if (str.find_first_not_of("1234567890+-") < str.size())  return 0;//如果存在不合法字符

		char ch = str[0];
		int i = 0;
		//判断符合
		if (ch == '-') 
		{
			flag = 0;//数字为负数
			i = 1;
		}
		else if (ch == '+')
		{
			flag = 1;//为正数
			i = 1;
		}
		else
		{
			i = 0;
		}

		while (i<str.size())
		{
		//	cout << "str[i]:" << str[i] << endl;
			int a = str[i]-48; //char类型和int类型相差48
		//	cout << "a:" << a << endl;
			num = num * 10 + a;
			cout << "num:" << num << endl;
			i++;
		}

		if (flag == 0) num = -num;
		
		return num;
	}
};

int main()
{
	
	Solution so;
	//int count = so.FirstNotRepeatingChar("wangdanwang");
	vector<int> data = { 1,2,3,4,5,5,5,6,7,8};
	int count = so.StrToInt("123");
	cout << count << endl;
	
	
	
	cout << endl;
	return 0;
}
原文地址:https://www.cnblogs.com/wdan2016/p/6021313.html