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

Posted

技术标签:

【中文标题】如何计算字符串并将其存储在变量中? [复制]【英文标题】:How to calculate a string and store it in a variable? [duplicate] 【发布时间】:2019-07-28 09:24:01 【问题描述】:

我正在编写一个 c++ 计算器,但我一直卡在将 std::string 更改为浮点变量以进行数学计算的部分。

我已经尝试过 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 result=calc 中添加单引号时) 1.93708e+009.

【问题讨论】:

以上代码将无法编译。您不能将std::string 分配给float,如float result=calc;。您还丢弃了atoi() 的返回值。 atoi 不是您正在寻找的评估函数,它只是将数字字符串转换为整数。例如将"12" 转换为12 @kornkaobat This post 可以帮助你。 好的,我找到了解决我的问题的 tinyexpr.h 头文件。 查看这里:geeksforgeeks.org/expression-evaluation 【参考方案1】:

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

因为:

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

您需要自己实现此行为。

【讨论】:

以上是关于如何计算字符串并将其存储在变量中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何拆分字符串并将其存储在临时变量中[重复]

如何从存储过程中获取 SQL 字符串结果并将其保存在 C# Windows 应用程序字符串变量中

是否可以将javascript数组存储在json中? [复制]

如何匹配一个字符串,中间有任意词,并将其存储为变量?

如何获取网页内容并将其保存到字符串变量中

如何计算数组中的相同值并将其存储到变量中?