0Pricing
C++ Academy · 课时

构建一个简单的命令行计算器

构建一个命令行计算器,解析运算符并计算表达式

构建一个简单的命令行计算器 是 CoddyKit 上的免费 C++ Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C++ Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C++ Academy 课程共包含 4 节课。

项目目标

构建一个命令行计算器,读取类似 3 + 4 的表达式并打印结果。我们会让它保持精简,同时结构清晰。

所需头文件

我们需要 iostream 处理输入/输出,需要 string 处理输入。

#include <iostream>
#include <string>
#include <sstream>

主循环框架

读取一行,解析它,计算并打印结果。在 EOF 时退出。

int main() {
    std::string line;
    while (std::getline(std::cin, line)) {
        if (line == "quit") break;
        double result = evaluate(line);
        std::cout << "= " << result << "\n";
    }
}

使用 stringstream 进行解析

对于两个操作数和一个运算符,使用 stringstream 进行标记化既简单又可靠。

double evaluate(const std::string& line) {
    std::stringstream ss(line);
    double a, b;
    char op;
    ss >> a >> op >> b;
    return apply(op, a, b);
}

应用运算符

根据运算符字符使用 switch。

double apply(char op, double a, double b) {
    switch (op) {
        case '+': return a + b;
        case '-': return a - b;
        case '*': return a * b;
        case '/': return b != 0 ? a / b : 0;
        default:  return 0;
    }
}

错误处理

如果用户输入了无效内容怎么办?请检查流状态并报告友好的消息。

if (!(ss >> a >> op >> b)) {
    std::cout << "Invalid input\n";
    return 0;
}

除零

请显式处理除零情况。您可以打印错误,也可以抛出异常——选择适合您设计的方式。

if (op == '/' && b == 0) {
    throw std::runtime_error("division by zero");
}

添加更多运算符

扩展 switch 以支持更多操作:%、用于幂运算的 ^,或类似 sqrt 的命名函数。

维护状态

想要维护累计总数吗?请存储上一次的结果,并允许用户以 + 开始表达式。

double last = 0;
// if first token is an operator, use `last` as the first operand

改善用户体验

在每次输入前打印提示,接受 quit 或 EOF 退出,并忽略空行。

处理两个以上的操作数

对于类似 3 + 4 * 2 的多操作数表达式,您需要表达式解析器。调度场算法是标准方案。

测试计算器

从文件传入输入即可快速测试。

echo "3 + 4\n10 / 2" | ./calc

快速检查

哪个标准库工具适合解析类似 3 + 4 的空格分隔标记?

回顾

一个小型 CLI 计算器展示了输入/输出、使用 stringstream 进行解析,以及由 switch 驱动的分派。您可以继续添加错误处理、更多运算符、状态管理,最终再加入表达式解析器。

常见问题解答

「构建一个简单的命令行计算器」课时是免费的吗?

是的 — 「构建一个简单的命令行计算器」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C++ Academy 课程的其余内容,请升级到 CoddyKit PRO。 C++ Academy 课程共包含 4 节课。

「构建一个简单的命令行计算器」这节课中我会学到什么?

构建一个命令行计算器,解析运算符并计算表达式 你通过在浏览器中直接运行的动手代码来练习 C++ Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 C++ Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 C++ Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「构建一个简单的命令行计算器」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 C++ Academy 课中编写并运行代码吗?

能。每节 C++ Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 构建一个简单的命令行计算器
  2. 读取和写入 CSV 文件
  3. 数字猜谜游戏
  4. 单词频率统计器
← 返回 C++ Academy