| Document number: | N1803=05-0063 |
| Date: | 2005-04-18 |
| Project: | Programming Language C++ |
| Reference: | ISO/IEC IS 14882:2003(E) |
| Reply to: | Pete Becker |
| Dinkumware, Ltd. | |
| petebecker@acm.org |
Add the following to [lib.string.classes] at the end of the "Header <string> synopsis":
int stoi(string& str, int base = 10);
long stol(string& str, int base = 10);
unsigned long stoul(string& str, int base = 10);
long long stoll(string& str, int base = 10);
unsigned long long stoull(string& str, int base = 10);
float stof(string& str);
double stod(string& str);
long double stold(string& str);
string to_string(long long val);
string to_string(unsigned long long val);
string to_string(long double val);
Add the following as a new subclause 21.3.7.10, "Numeric conversions":
int stoi(string& str, int base = 10); long stol(string& str, int base = 10); unsigned long stoul(string& str, int base = 10); long long stoll(string& str, int base = 10); unsigned long long stoull(string& str, int base = 10);Effects: the first two functions call
strtol(str.c_str(), 0, base), and the last three functions callstrtoul(str.c_str(), 0, base),strtoll(str.c_str(), 0, base), andstrtoull(str.c_str(), 0, base), respectively. Each returns the converted result, if any, and erases the characters from the front ofstrthat were converted to get the result.Returns: the converted result.
Throws:
invalid_argumentifstrol,strtoul,strtoll, orstrtoullreports that no conversion could be performed. Throwsout_of_rangeif the converted value is outside the range of representable values for the return type.float stof(string& str); double stod(string& str); long double stold(string& str);Effects: the functions call
strtof(str.c_str(), 0),strtod(str.c_str(), 0), andstrtold(str.c_str(), 0), respectively, and return the converted result, if any. They erase the characters from the front ofstrthat were converted to get the result.Returns: the converted result.
Throws:
invalid_argumentifstrof,strtod, orstrtoldreports that no conversion could be performed. Throwsout_of_rangeifstrtof,strtod, orstrtoldsetserrnotoERANGE.string to_string(long long val); string to_string(unsigned long long val); string to_string(long double val);Returns: each function returns a
stringobject holding the character representation of the value of its argument that would be generated by callingsprintf(buf, fmt, val)with a format specifier of"%lld","%ulld", or"%f", respectively.Throws: nothing.