mirror of
https://github.com/elasota/Aerofoil.git
synced 2025-09-23 06:53:43 +00:00
53 lines
735 B
C++
53 lines
735 B
C++
#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;
|
|
}
|