gpt4 book ai didi

c++ - 使用递归 C++ 将字符串转换为整数

转载 作者:行者123 更新时间:2023-11-28 02:33:58 25 4
gpt4 key购买 nike

int toInteger(const string& str, int count,int&value){
if(str.length() == 1) {
value += (str[0] - '0')*pow(10,count);
return value;
}
else{
value +=(str[str.length()-1] - '0')*pow(10,count);
cout << value << endl << str << endl;
toInteger(str.substr(0,str.length()-1),count+1,value);
}
return value;
}

int main(){
string str;
cout << "Enter String : ";
cin >> str;
int count = 0;
int value = 0;
int toint = toInteger(str, count, value);
cout << toint << endl;
}

该函数假设获取一个字符串输入 str,然后使用递归返回该字符串的整数版本。

Str”是字符串
"count"是幂乘数::最初为 0
"value"是返回值::初始为0

然而这个程序在这个函数中的问题似乎出现在字符串至少长度为 3 之后:

如果我的字符串输入是“12”,那么我得到返回值 12。

如果我的字符串输入是“123”,那么我得到的返回值是 122。(函数是如何减一的?

如果我的字符串输入是“1234”,那么我得到的返回值是 1233。(再次减去 1)

最佳答案

从浮点类型到整数类型的转换向零舍入。

如果您的浮点值非常接近 123...但不完全,您将失去所有那个小数值,最后得到 122。

这适用于此。

  value += (str[0] - '0')*pow(10,count);

尝试制作pow非常初级整数版本供您的函数使用。只是为了测试它。

int pow( int x, int y )
{
int result = 1;
while ( y-- ) result *= x;
return x;
}

int toInteger(const string& str, int count,int&value){
if(str.length() == 1) {
value += (str[0] - '0')*pow(10,count);
return value;
}
else{
value +=(str[str.length()-1] - '0')*pow(10,count);
cout << value << endl << str << endl;
toInteger(str.substr(0,str.length()-1),count+1,value);
}
return value;
}

此版本没有整型和浮点型之间的转换。因此,没有舍入

关于c++ - 使用递归 C++ 将字符串转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28163569/

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