在c++中将字符串转换为int,得到更小的值Visual Studio 2013

Convert string to int in c++ getting smaller value Visual Studio 2013

本文关键字:2013 Studio Visual c++ 字符串 转换 int      更新时间:2023-10-16

我正在将str="35555555555577777"转换为整数

int smallest;
stringstream(str) >> smallest;

我变得最小=-8795我尝试过atoi、_atoi64和其他方式,但我仍然得到了较少的值。字符串长度为35

我正在使用Visual Studio 2013。

程序行为是未定义的,因为您溢出了一个有符号的积分类型。

64位1或2的补码signed int不能大于9223372036854775807。您的输入数字大于该数字。

如果你的系统有uint128_t,你可以试试。我有意使用unsigned类型,因为定义了溢出unsigned类型的行为。如果您没有uint128_t,那么您将不得不使用一个设计用于处理大整数的库。