我正在编写一个c ++计算器,但是我一直卡在将std :: string更改为float变量以进行数学计算的部分。
我已经尝试过atoi并使用'var'(单引号),但它似乎会导致数字异常增加,并且代码的某些变化甚至都不会编译为“第13行第18列C:\ Users \ User \ Desktop \ calculator.cpp [错误]无法在初始化时将'std :: string {aka std :: basic_string}'转换为'float'。
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string>
#include <stdlib.h>
int main()
{
std::cout << "Input arithmetic calculation: \n";
std::string calc;
std::cin >> calc;
atoi( calc.c_str() );
float result=calc;
std::cout << "Result = ";
std::cout << result << '\n';
}
我希望计算输出,例如 10 * 9 = 90 但最终以 10 * 9 或(当在float结果中将单引号添加到calc = calc时) 1.93708e + 009。
答案 0 :(得分:1)
[...]我一直停留在将
std::string
更改为float
变量以进行数学计算的部分上。
因为:
atoi()
的值。用法如下所示:float result = atoi(calc.c_str());
atoi()
并没有您认为的那样。它不会不执行任何数学评估。它只是将可以表示为数字的文本转换为所述数字,即float x = atoi("5");
将产生x == 5
。您不能使用atoi()
并期望它执行数学计算。它只是转换。您需要自己实现此行为。