[英]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.