如何计算字符串并将其存储在变量中?

时间:2019-07-28 09:24:01

标签: c++ dev-c++

我正在编写一个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。

1 个答案:

答案 0 :(得分:1)

  

[...]我一直停留在将std::string更改为float变量以进行数学计算的部分上。

因为:

  1. 您丢弃atoi()的值。用法如下所示:float result = atoi(calc.c_str());
  2. atoi()并没有您认为的那样。它不会执行任何数学评估。它只是将可以表示为数字的文本转换为所述数字,即float x = atoi("5");将产生x == 5。您不能使用atoi()并期望它执行数学计算。它只是转换。

您需要自己实现此行为。