string to int: Ignore whitespaces at beginning
This commit is contained in:
parent
06f401b393
commit
045c713cf5
|
@ -366,6 +366,8 @@ IntegralType stringToNumber(const StringType &string, typename StringType::value
|
||||||
{
|
{
|
||||||
auto i = string.begin();
|
auto i = string.begin();
|
||||||
auto end = string.end();
|
auto end = string.end();
|
||||||
|
for (; i != end && *i == ' '; ++i)
|
||||||
|
;
|
||||||
if (i == end) {
|
if (i == end) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -440,6 +442,11 @@ IntegralType stringToNumber(const CharType *string, unsigned char base = 10)
|
||||||
if (!*string) {
|
if (!*string) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
for (; *string && *string == ' '; ++string)
|
||||||
|
;
|
||||||
|
if (!*string) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
const bool negative = (*string == '-');
|
const bool negative = (*string == '-');
|
||||||
if (negative) {
|
if (negative) {
|
||||||
++string;
|
++string;
|
||||||
|
|
|
@ -249,16 +249,18 @@ void ConversionTests::testStringConversions()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// stringToNumber() with leading zeroes and different types
|
// stringToNumber() with spaces at the beginning, leading zeroes and different types
|
||||||
int32 res = stringToNumber<int32, string>("01");
|
CPPUNIT_ASSERT_EQUAL(1, stringToNumber<int32>("01"));
|
||||||
CPPUNIT_ASSERT_EQUAL(1, res);
|
CPPUNIT_ASSERT_EQUAL(1, stringToNumber<int32>(L"01"s));
|
||||||
res = stringToNumber<int32, wstring>(L"01");
|
CPPUNIT_ASSERT_EQUAL(1, stringToNumber<int32>(u"01"s));
|
||||||
CPPUNIT_ASSERT_EQUAL(1, res);
|
CPPUNIT_ASSERT_EQUAL(-23, stringToNumber<int32>(" - 023"s));
|
||||||
res = stringToNumber<int32, u16string>(u"01");
|
CPPUNIT_ASSERT_EQUAL(1u, stringToNumber<uint32>("01"));
|
||||||
CPPUNIT_ASSERT_EQUAL(1, res);
|
CPPUNIT_ASSERT_EQUAL(1u, stringToNumber<uint32>(L"01"s));
|
||||||
|
CPPUNIT_ASSERT_EQUAL(1u, stringToNumber<uint32>(u"01"s));
|
||||||
|
CPPUNIT_ASSERT_EQUAL(23u, stringToNumber<uint32>(" 023"s));
|
||||||
|
|
||||||
// interpretIntegerAsString()
|
// interpretIntegerAsString()
|
||||||
CPPUNIT_ASSERT(interpretIntegerAsString<uint32>(0x54455354) == "TEST");
|
CPPUNIT_ASSERT_EQUAL("TEST"s, interpretIntegerAsString<uint32>(0x54455354));
|
||||||
|
|
||||||
// splitString() / joinStrings()
|
// splitString() / joinStrings()
|
||||||
string splitJoinTest = joinStrings(splitString<vector<string>>(",a,,ab,ABC,s"s, ","s, EmptyPartsTreat::Keep), " "s, false, "("s, ")"s);
|
string splitJoinTest = joinStrings(splitString<vector<string>>(",a,,ab,ABC,s"s, ","s, EmptyPartsTreat::Keep), " "s, false, "("s, ")"s);
|
||||||
|
|
Loading…
Reference in New Issue