构建一个简单的命令行计算器
构建一个命令行计算器,解析运算符并计算表达式
构建一个简单的命令行计算器 是 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 反馈 — 无需本地设置。
此课程中的所有课时
- 构建一个简单的命令行计算器
- 读取和写入 CSV 文件
- 数字猜谜游戏
- 单词频率统计器