gpt4 book ai didi

c++ - 将整数字符串转换为 int 的最简单方法

转载 作者:太空宇宙 更新时间:2023-11-04 14:39:40 26 4
gpt4 key购买 nike

我有一个很长的数字,有数百位数字,我存储在一个字符串中。现在,我想将它逐位读入整数/长数字。

long int strtol (const char * str, char ** endptr, int base);需要一个结束指针,但我似乎无法正确设置它,因为它会尝试读取所有数字,因此返回LONG_MAX

char str[]=
"70172427121883998797908792274921901699720888093776\
65727333001053367881220235421809751254540594752243\
52584907711670556013604839586446706324415722155397\
53697817977846174064955149290862569321978468622482\
83972241375657056057490261407972968652414535100474\
82166370484403199890008895243450658541227588666881\
16427171479924442928230863465674813919123162824586";

char *pEnd; //set pEnd to str[1]'s address how???
long num = strtol(str, &pEnd, 10);
cout << num << endl; //LONG_MAX

我想到了一些解决方案,比如将它复制到一个新的字符数组,然后应用 strtol 但这似乎不是最好的方法。

那么最简单/最好的方法是什么?

最佳答案

如果你想读取单个数字,你可以简单地使用:

int digit = str[digitIndex] - '0';

无论实现使用何种字符集,这都有效,因为标准保证数字“0”-“9”将由连续值表示。

strtolendptr 参数并不是你想的那样:它是用来返回转换停止的位置,而不是告诉函数在哪里停止.

如果要转换str 的多位子字符串,可以只将所需的数字复制到新字符串中,如下所示:

std::string partialStr(str+startIndex, numDigits);

然后使用 one of the methods here 将其转换为整数.

关于c++ - 将整数字符串转换为 int 的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13606266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com