- Restored in-depth checking inside string_to<T>. Under advice of Matteo some code is still commented, since we are not sure if it`s correct
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@947 3ecf2c5c-341e-0410-92b4-d18e462d057c
This commit is contained in:
parent
645156e62c
commit
1cdd2a6a9e
|
@ -46,9 +46,14 @@ namespace sgpem
|
||||||
T
|
T
|
||||||
string_to(const ustring& str) throw(domain_error)
|
string_to(const ustring& str) throw(domain_error)
|
||||||
{
|
{
|
||||||
|
if (tokenize(str).size() != 1)
|
||||||
|
throw domain_error(_("too few or too many tokens"));
|
||||||
|
|
||||||
istringstream iss(str);
|
istringstream iss(str);
|
||||||
T result;
|
T result;
|
||||||
|
|
||||||
|
iss.exceptions(ios_base::failbit | ios_base::badbit);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
iss >> result;
|
iss >> result;
|
||||||
|
@ -58,6 +63,13 @@ namespace sgpem
|
||||||
throw domain_error(e.what());
|
throw domain_error(e.what());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// disable exceptions, otherwise peek() will throw them!
|
||||||
|
// how useless!!!
|
||||||
|
// iss.exceptions(ios_base::goodbit);
|
||||||
|
|
||||||
|
// if (iss.peek() != istringstream::traits_type::eof())
|
||||||
|
// throw domain_error(_("incorrect number format"));
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +83,24 @@ namespace sgpem
|
||||||
|
|
||||||
istringstream iss(str);
|
istringstream iss(str);
|
||||||
bool value;
|
bool value;
|
||||||
iss >> value;
|
|
||||||
|
iss.exceptions(ios_base::failbit | ios_base::badbit);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
iss >> boolalpha >> value;
|
||||||
|
}
|
||||||
|
catch (ios_base::failure e)
|
||||||
|
{
|
||||||
|
throw domain_error(e.what());
|
||||||
|
}
|
||||||
|
|
||||||
|
// disable exceptions, otherwise peek() will throw them!
|
||||||
|
// how useless!!!
|
||||||
|
// iss.exceptions(ios_base::goodbit);
|
||||||
|
|
||||||
|
// if (iss.peek() != istringstream::traits_type::eof())
|
||||||
|
// throw domain_error(_("incorrect boolean"));
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue