2013-10-11 30 views

回答

10

21.5数值转换

unsigned long stoul(const string& str, size_t *idx = 0, int base = 10);

效果: ...叫[秒] strtoul(str.c_str(), ptr, base) ...返回转换结果,如果有的话。

抛出: ... out_of_range如果转换值超出返回类型的可表示值范围。

这里的“转换值”是strtoul返回的值。当然,其类型为unsigned long,因此不能超出返回类型stoul(也是unsigned long)的可表示值范围。

据我所知,只有stoi可以抛出out_of_range,因为它返回int但使用strtol返回long

此外,C标准规定的方式为strtoul,需要接受字符串"-4"并返回等于-(unsigned long)4的值。为什么这样指定,我不知道。

+3

谢谢,这很烦人 – Kal

相关问题