do not use std::{to_string,stoi} as they cause problems with cygwin

This commit is contained in:
Maxime Coste 2013-06-18 22:11:44 +02:00
parent a642026e7c
commit 6d125e6c36
4 changed files with 15 additions and 11 deletions

View File

@ -20,7 +20,8 @@ Color str_to_color(const String& color)
static const Regex rgb_regex{"rgb:[0-9a-fA-F]{6}"}; static const Regex rgb_regex{"rgb:[0-9a-fA-F]{6}"};
if (boost::regex_match(color, rgb_regex)) if (boost::regex_match(color, rgb_regex))
{ {
long l = stol(color.substr(ByteCount{4}), NULL, 16); unsigned l;
sscanf(color.c_str() + 4, "%x", &l);
return { (unsigned char)((l >> 16) & 0xFF), return { (unsigned char)((l >> 16) & 0xFF),
(unsigned char)((l >> 8) & 0xFF), (unsigned char)((l >> 8) & 0xFF),
(unsigned char)(l & 0xFF) }; (unsigned char)(l & 0xFF) };

View File

@ -79,7 +79,7 @@ bool is_horizontal_blank(char c)
struct unterminated_string : parse_error struct unterminated_string : parse_error
{ {
unterminated_string(const std::string& open, const std::string& close, int nest = 0) unterminated_string(const String& open, const String& close, int nest = 0)
: parse_error{"unterminated string '" + open + "..." + close + "'" + : parse_error{"unterminated string '" + open + "..." + close + "'" +
(nest > 0 ? "(nesting: " + to_string(nest) + ")" : "")} (nest > 0 ? "(nesting: " + to_string(nest) + ")" : "")}
{} {}

View File

@ -25,14 +25,17 @@ std::vector<String> split(const String& str, char separator)
int str_to_int(const String& str) int str_to_int(const String& str)
{ {
try int res = 0;
{ if (sscanf(str.c_str(), "%i", &res) != 1)
return stoi(str);
}
catch (std::logic_error&)
{
throw runtime_error(str + "is not a number"); throw runtime_error(str + "is not a number");
} return res;
}
String to_string(int val)
{
char buf[16];
sprintf(buf, "%i", val);
return buf;
} }
String option_to_string(const Regex& re) String option_to_string(const Regex& re)

View File

@ -103,10 +103,10 @@ void option_from_string(const String& str, Regex& re);
int str_to_int(const String& str); int str_to_int(const String& str);
using std::to_string; String to_string(int val);
template<typename RealType, typename ValueType> template<typename RealType, typename ValueType>
std::string to_string(const StronglyTypedNumber<RealType, ValueType>& val) String to_string(const StronglyTypedNumber<RealType, ValueType>& val)
{ {
return to_string((ValueType)val); return to_string((ValueType)val);
} }