有没有可以在 c++ 中替换 atoi 的函数。我做了一些研究并没有找到任何可以替代它的东西,唯一的解决方案是使用 cstdlib 或自己实现它
原文由 Mansuro 发布,翻译遵循 CC BY-SA 4.0 许可协议
boost::lexical_cast
是你的朋友
#include <string>
#include <boost/lexical_cast.hpp>
int main()
{
std::string s = "123";
try
{
int i = boost::lexical_cast<int>(s); //i == 123
}
catch(const boost::bad_lexical_cast&)
{
//incorrect format
}
}
原文由 Armen Tsirunyan 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
1 回答1.6k 阅读✓ 已解决
如果您不想使用 Boost,C++11 为字符串添加了
std::stoi
。所有类型都存在类似的方法。与
atoi
不同,如果无法进行转换,则会抛出invalid_argument
异常。此外,如果值超出 int 的范围,则会引发out_of_range
异常。