Using locale when using isspace etc
parent
ed881ea58a
commit
3ca8edbc96
10
Tle.cpp
10
Tle.cpp
|
@ -351,7 +351,7 @@ void Tle::ValidateLine(const std::string& line, const std::string& pattern)
|
||||||
/*
|
/*
|
||||||
* number or ' '
|
* number or ' '
|
||||||
*/
|
*/
|
||||||
if (!isdigit(mtch) && mtch != ' ')
|
if (!std::isdigit(mtch, std::locale::classic()) && mtch != ' ')
|
||||||
{
|
{
|
||||||
throw TleException("Invalid character");
|
throw TleException("Invalid character");
|
||||||
}
|
}
|
||||||
|
@ -364,7 +364,7 @@ void Tle::ValidateLine(const std::string& line, const std::string& pattern)
|
||||||
*/
|
*/
|
||||||
if (mtch != '+' && mtch != '-'
|
if (mtch != '+' && mtch != '-'
|
||||||
&& mtch != ' ' && mtch != '0'
|
&& mtch != ' ' && mtch != '0'
|
||||||
&& !isdigit(mtch))
|
&& !std::isdigit(mtch, std::locale::classic()))
|
||||||
{
|
{
|
||||||
throw TleException("Invalid character");
|
throw TleException("Invalid character");
|
||||||
}
|
}
|
||||||
|
@ -397,7 +397,9 @@ void Tle::ValidateLine(const std::string& line, const std::string& pattern)
|
||||||
/*
|
/*
|
||||||
* alpha or ' '
|
* alpha or ' '
|
||||||
*/
|
*/
|
||||||
if (!isupper(mtch) && !isalpha(mtch) && mtch != ' ')
|
if (!std::isupper(mtch, std::locale::classic()) &&
|
||||||
|
!std::isalpha(mtch, std::locale::classic()) &&
|
||||||
|
mtch != ' ')
|
||||||
{
|
{
|
||||||
throw TleException("Invalid character");
|
throw TleException("Invalid character");
|
||||||
}
|
}
|
||||||
|
@ -424,7 +426,7 @@ int Tle::CheckSum(const std::string & str)
|
||||||
{
|
{
|
||||||
char ch = str[i];
|
char ch = str[i];
|
||||||
|
|
||||||
if (isdigit(ch))
|
if (std::isdigit(ch, std::locale::classic()))
|
||||||
{
|
{
|
||||||
xsum += (ch - '0');
|
xsum += (ch - '0');
|
||||||
}
|
}
|
||||||
|
|
18
Util.cpp
18
Util.cpp
|
@ -2,20 +2,30 @@
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <locale>
|
#include <locale>
|
||||||
|
#include <functional>
|
||||||
|
|
||||||
namespace Util
|
namespace Util
|
||||||
{
|
{
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
struct IsDigit: std::unary_function<char, bool>
|
||||||
|
{
|
||||||
|
bool operator()(char c) const
|
||||||
|
{
|
||||||
|
return std::isdigit(c, std::locale::classic()) == 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
void TrimLeft(std::string& s)
|
void TrimLeft(std::string& s)
|
||||||
{
|
{
|
||||||
s.erase(s.begin(),
|
s.erase(s.begin(),
|
||||||
std::find_if(s.begin(), s.end(),
|
std::find_if(s.begin(), s.end(), std::not1(IsDigit())));
|
||||||
std::not1(std::ptr_fun<int, int>(std::isspace))));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrimRight(std::string& s)
|
void TrimRight(std::string& s)
|
||||||
{
|
{
|
||||||
s.erase(std::find_if(s.rbegin(), s.rend(),
|
s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(IsDigit())).base(),
|
||||||
std::not1(std::ptr_fun<int, int>(std::isspace))).base(),
|
|
||||||
s.end());
|
s.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue