如何计算字符串并将其存储在变量中? [复制]
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 应用程序字符串变量中