首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >串流数学运算

串流数学运算
EN

Stack Overflow用户
提问于 2020-01-22 15:05:35
回答 2查看 212关注 0票数 2

假设我有一个包含字符串1+2的字符串流。现在,如果我得到这个字符串流的int值,则得到1作为结果。有没有办法获得3的预期结果?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-22 15:25:17

当然,您可以创建自己的result类型,然后有一个自定义提取操作符,该操作符以您希望的方式从字符串流读取:

代码语言:javascript
复制
struct result {
    double val;
    bool err;
    std::string err_val;
};

std::istringstream& operator>>(std::istringstream &iss, result &r) {
    double lhs, rhs;
    char op;
    //Should probably add some check to make sure this read happens okay...
    iss >> lhs >> op >> rhs; 

    if (op == '+') {
        r.val = lhs + rhs;
        r.err = false;
    } else {
        r.err = true;
        r.err_val = "I can only handle addition!";
    }
    return iss;
}

int main() {
    std::istringstream iss("1+2");
    result res;
    iss >> res;

    std::cout << "Result is: " << res.val << std::endl;

    return 0;
}

看到它在这里运行:https://ideone.com/LKAlag

票数 1
EN

Stack Overflow用户

发布于 2020-01-22 15:10:30

不使用标准C++库。表达式解析不是标准C++的一部分。你得自己写。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59862632

复制
相关文章

相似问题

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