itoa atoi

#pragma once

#include <iostream>
#include <string>
using namespace std;

//itoa
//int ==> string
//10進制
string itoa(int nNum)
{
	int nSize = 128;
	char* pStr = new char[nSize];
	memset(pStr,0,nSize);
	char* pCurr = pStr;
	char* pBg = pCurr;
	if(nNum < 0)
	{
		*pCurr = '-';
		pCurr ++;
		nNum = 0 - nNum;
		pBg = pCurr;
	}

	while(nNum > 0)
	{
		*pCurr = nNum%10 + '0';
		pCurr ++;
		nNum = nNum/10;
	}
	pCurr --;

	//倒置
	for(int i=0;i<=(pCurr - pBg)/2;i++)
	{
		char cTmp = *(pBg + i);
		*(pBg + i) = *(pCurr - i);
		*(pCurr - i) = cTmp;
	}

	string str(pStr);
	delete pStr;
	return str;
}


//atoi
int atoi(const char* pStr,int nLen = 0)
{
	if(nLen == 0)
	{
		nLen = strlen(pStr);
	}
	int nValue = 0;
	int nSub = 1;
	int nEnd = 0;
	if(pStr[0] == '-')
	{
		nEnd = 1;
	}
	for(int i=nLen-1;i>=nEnd;i--)
	{
		nValue += (pStr[i] - '0')*nSub;
		nSub *= 10;
	}
	if(nEnd == 1)
	{
		nValue = 0- nValue;
	}
	return nValue;
}
相關文章
相關標籤/搜索