Add StringToNum implementation

This commit is contained in:
elasota
2019-12-27 14:18:20 -05:00
parent 8ca4d17de7
commit 751a60b580

View File

@@ -1,52 +1,52 @@
#include "PLNumberFormatting.h" #include "PLNumberFormatting.h"
#include "PLPasStr.h" #include "PLPasStr.h"
void StringToNum(const PLPasStr &str, long *num) void StringToNum(const PLPasStr &str, long *num)
{ {
if (str.Length() == 0) if (str.Length() == 0)
{ {
num = 0; num = 0;
return; return;
} }
const size_t len = str.Length(); const size_t len = str.Length();
const char *chars = str.Chars(); const char *chars = str.Chars();
const char *charsEnd = chars + len; const char *charsEnd = chars + len;
long result = 0; long result = 0;
if (chars[0] == '-') if (chars[0] == '-')
{ {
chars++; chars++;
while (chars != charsEnd) while (chars != charsEnd)
{ {
const char c = *chars++; const char c = *chars++;
if (c < '0' || c > '9') if (c < '0' || c > '9')
{ {
num = 0; num = 0;
return; return;
} }
result = result * 10 - (c - '0'); result = result * 10 - (c - '0');
} }
} }
else else
{ {
while (chars != charsEnd) while (chars != charsEnd)
{ {
const char c = *chars++; const char c = *chars++;
if (c < '0' || c > '9') if (c < '0' || c > '9')
{ {
num = 0; num = 0;
return; return;
} }
result = result * 10 + (c - '0'); result = result * 10 + (c - '0');
} }
} }
*num = result; *num = result;
} }