簡體   English   中英

C++ 將字符串邏輯表達式轉換為條件表達式

[英]C++ Convert string logical expression to conditional expression

我在字符串中有一個邏輯表達式,需要求值。 C++有辦法嗎?

std::string exp = "(1||0)&&(1&&1)&&(1||0&&0)";

例如:

if ((1 || 0) && (1 && 1) && (1 || 0 && 0))
    {
        std::cout << "true\n";
    }

C++ 中沒有簡單的內置方法來評估這樣的邏輯表達式。 如果你想在運行時評估這樣的表達式,你需要首先通過編寫解析器將字符串解析為某種中間表示(例如表達式樹),然后編寫一個評估器,將該樹展平為單個值。

然后,假設

struct ExprTree { ... };
ExprTree parse(std::string const& input);
bool eval(ExprTree const& expr);

你可以得到這樣一個字符串表達式的結果

std::string exp = "(1||0)&&(1&&1)&&(1||0&&0)";
if (eval(parse(exp)) {
    // ... 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM