【发布时间】:2017-01-22 01:13:06
【问题描述】:
标题具有误导性,因为我对寻找替代解决方案更感兴趣。我的直觉是检查缓冲区是否为空并不是最理想的解决方案(至少在我的情况下)。
我是 C++ 新手,一直在关注 Bjarne Stroustrup 的《使用 C++ 的编程原则和实践》。我目前在第 7 章,我们正在“改进”第 6 章中的计算器。(我会将源代码的链接放在问题的末尾。)
基本上,计算器可以接受用户的多个输入,用分号分隔。
> 5+2; 10*2; 5-1;
= 7
> = 20
> = 4
>
但我想去掉最后两个答案的提示字符 ('>'),仅在要求用户输入时再次显示。我的第一直觉是找到一种方法来检查缓冲区是否为空,如果是,则计算字符,如果不是,则继续计算答案。但经过一番谷歌搜索后,我意识到这项任务并不像我最初想象的那么容易......而且这可能不是一个好主意。
我想基本上我的问题是当有多个输入时如何去掉最后两个答案的“>”字符。但如果检查 cin 缓冲区 是 是可能的,而且 不是 毕竟是个坏主意,我很想知道该怎么做。
源码:https://gist.github.com/Spicy-Pumpkin/4187856492ccca1a24eaa741d7417675
头文件:http://www.stroustrup.com/Programming/PPP2code/std_lib_facilities.h
^ 你需要这个头文件。估计是作者自己写的。
编辑:我确实在网上寻找了一些解决方案,但老实说,它们对我来说都没有任何意义。我学习 C++ 已经有 4 天了,而且我的编程背景很薄,所以有时甚至谷歌搜索都有些困难..
【问题讨论】:
-
用棍子戳它,看它是否咆哮。
-
在这种情况下,您可以使用
std::getline一次读取整行,并在每行之后显示提示 -
“标题具有误导性,因为我对寻找替代解决方案更感兴趣。” - 为什么要故意选择具有误导性的标题?
-
@ChristianHackl 我不知道如何为我的问题命名,同时有效地解决我的所有观点。 (也不希望它太长)。尽管具有误导性,但并非完全无关紧要;我想知道如何检查缓冲区是否为空,只是 希望 知道替代解决方案,因为我是 C++ 新手。