gpt4 book ai didi

c++ - 尝试将字符串数组转换为 int 但在 C++ 中不起作用

转载 作者:太空狗 更新时间:2023-10-29 21:18:02 25 4
gpt4 key购买 nike

我正在尝试解决 Project Euler Problem #16:https://projecteuler.net/problem=16 .它要求我对 2^1000 的结果中的每一位求和。

我通过将字符串视为数组来遍历字符串(从 double 类型转换而来)。但是,当我尝试将字符串数字转换回 int 时,我总是出错。

我尝试使用stoi,它提示我“no matching function for call to 'atoi'”。我也试过用stringstream进行转换,还是不行。

请看我下面的代码:

#include <iostream>
#include <complex> // pow
#include <string> // to_string C++ 11

const double NUM = pow(2, 1000);

int main(int argc, char const *argv[]) {
int sum = 0;
//printf("%.0f\n", NUM); // Remove decimal digits
auto str = std::to_string(NUM);
std::string str_trim = str.substr(0, str.length()-7);
std::cout << str_trim << std::endl; // 2^1000 in string

for (int i = 0; i <= str_trim.length(); i++) {
std::cout << str_trim[i] << std::endl;
sum = sum + str_trim[i];
std::cout << sum << std::endl;
}
return 0;
}

有解决这个问题的办法吗?谢谢。

最佳答案

纯属巧合,这种方法在大多数 2^1000 编译器上都能正常工作,因为 IEEE754 double 格式(C++ 中最常见的 float 格式)进行的舍入会将位视为零(并且在 2^1000 中,这些位确实为零)。

要总结数字,您只需遍历字符并执行

total += s[i] - '0';

利用 C++ 中 chars 确实是小整数这一事实。

关于c++ - 尝试将字符串数组转换为 int 但在 C++ 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31066818/

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