首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++将字符串逻辑表达式转换为条件表达式

C++将字符串逻辑表达式转换为条件表达式
EN

Stack Overflow用户
提问于 2022-09-28 06:20:04
回答 1查看 109关注 0票数 0

我在字符串中有一个逻辑表达式,需要进行计算。在C++中有什么方法可以做到吗?

代码语言:javascript
复制
std::string exp = "(1||0)&&(1&&1)&&(1||0&&0)";

例:

代码语言:javascript
复制
if ((1 || 0) && (1 && 1) && (1 || 0 && 0))
    {
        std::cout << "true\n";
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-28 09:14:21

在C++中没有简单的内置方式来计算这样的逻辑表达式。如果要在运行时计算这样的表达式,则需要首先通过编写解析器将字符串解析为某种中间表示形式(例如表达式树),然后编写将该树夷为平地为单个值的计算器。

然后,假设

代码语言:javascript
复制
struct ExprTree { ... };
ExprTree parse(std::string const& input);
bool eval(ExprTree const& expr);

这样的字符串表达式的结果可以使用

代码语言:javascript
复制
std::string exp = "(1||0)&&(1&&1)&&(1||0&&0)";
if (eval(parse(exp)) {
    // ... 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73876979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档