mirror of
https://github.com/elasota/Aerofoil.git
synced 2025-09-23 06:53:43 +00:00
Add StringToNum implementation
This commit is contained in:
@@ -1,52 +1,52 @@
|
||||
#include "PLNumberFormatting.h"
|
||||
#include "PLPasStr.h"
|
||||
|
||||
#include "PLNumberFormatting.h"
|
||||
#include "PLPasStr.h"
|
||||
|
||||
void StringToNum(const PLPasStr &str, long *num)
|
||||
{
|
||||
if (str.Length() == 0)
|
||||
{
|
||||
num = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
const size_t len = str.Length();
|
||||
const char *chars = str.Chars();
|
||||
const char *charsEnd = chars + len;
|
||||
|
||||
long result = 0;
|
||||
|
||||
if (chars[0] == '-')
|
||||
{
|
||||
chars++;
|
||||
|
||||
while (chars != charsEnd)
|
||||
{
|
||||
const char c = *chars++;
|
||||
|
||||
if (c < '0' || c > '9')
|
||||
{
|
||||
num = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
result = result * 10 - (c - '0');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while (chars != charsEnd)
|
||||
{
|
||||
const char c = *chars++;
|
||||
|
||||
if (c < '0' || c > '9')
|
||||
{
|
||||
num = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
result = result * 10 + (c - '0');
|
||||
}
|
||||
}
|
||||
|
||||
*num = result;
|
||||
}
|
||||
{
|
||||
if (str.Length() == 0)
|
||||
{
|
||||
num = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
const size_t len = str.Length();
|
||||
const char *chars = str.Chars();
|
||||
const char *charsEnd = chars + len;
|
||||
|
||||
long result = 0;
|
||||
|
||||
if (chars[0] == '-')
|
||||
{
|
||||
chars++;
|
||||
|
||||
while (chars != charsEnd)
|
||||
{
|
||||
const char c = *chars++;
|
||||
|
||||
if (c < '0' || c > '9')
|
||||
{
|
||||
num = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
result = result * 10 - (c - '0');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while (chars != charsEnd)
|
||||
{
|
||||
const char c = *chars++;
|
||||
|
||||
if (c < '0' || c > '9')
|
||||
{
|
||||
num = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
result = result * 10 + (c - '0');
|
||||
}
|
||||
}
|
||||
|
||||
*num = result;
|
||||
}
|
||||
|
Reference in New Issue
Block a user