gpt4 book ai didi

c++ - 无法弄清楚为什么我的 str2Int 函数返回 0

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

下面代码的输出是0,我想不通为什么。 (我知道我已经问过关于这段代码中的编译器错误的问题。现在它正在运行但无法正常工作。)

有人有想法吗?或者有更好的方法来编写我的 str2Int 函数?它应该采用像“2833812”这样的字符串并将其转换为 int 2833812。

#include <iostream>
#include <map>
#include <math.h>

const char digit_ints[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
std::map<char,int> digit_map;


int str2Int(const std::string& S) {
int sz(S.size()), sum(0);
if (sz == 0) {
std::cout << "str2Int() cannot take an empty string as a parameter." << std::endl;
return -1;
} else {
int sum(0);
for (int j(0), k(sz - 1); j < sz; ++j, --k) {
if ((S[j]) < '0' || (S[j]) > '9') {
std::cout << "str2Int can only take strings with chars '0' through '9' as parameters." << std::endl;
return -1;
} else {
sum += digit_map[S[j]] * (int)pow(10.0, k);
}
}

}
return sum;
}


int main() {

for (int i = 0; i < 10; ++i)
digit_map.insert(std::pair<char,int>(digit_ints[i], i));


std::cout << str2Int("3421");

return 0;
}

最佳答案

删除这一行

int sum(0);

从 else block 中,您正在创建一个新的 sum 变量,它的范围是 else block ,它从外部范围“隐藏”sum 变量。您正在从外部范围返回 sum 变量。

关于c++ - 无法弄清楚为什么我的 str2Int 函数返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20723565/

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