- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 B. Stroustrup 的 PPP 使用 C++,第一版学习 C++。第 7 章是第 6 章的扩展,其中开发了一个基本的计算器,它采用表达式(如 1+2;)来产生输出(';' 用于终止表达式)。 (我使用的是 Visual Studio 2013)
在7.2节中,为用户改进程序的布局,作者期望这样——
> 2+3;
=5
> 5*7;
=35
>
and(输入多个表达式)
> 2+3; 5*7; 2+9;
=5
> =35
> =11
>
通过使用此代码 -
main():
double val = 0;
while (cin) {
cout << "> "; // print prompt
Token t = ts.get(); // get token from Token_stream ts
if (t.kind == 'q' ) break; // 'q' for quit
if (t.kind == ';' ) // ';' to print value
cout << "= " << val << '\n'; // print result
else
ts.putback(t); // put back token in Token_stream ts
val = expression(); // evaluate expression
}
但据我所知,这段代码无法生成这样的输出,而是像这样工作,
primary()
函数中)。因此,只有当 main()
检测到 ';'
时才会打印表达式的值,而 >
将每次都被打印,甚至在打印表达式的值之前,甚至一个简单表达式的输出,1+2;
我的程序是 -
> 1+2;
> =3
2+3;
> =5
_
第 3 行带有光标(有意使用下划线)。
那么,我是否更正了作者使用了错误的代码?还是我只是疯了,还有其他我看不到的东西?
Here是计算器的完整代码。
Here是库 std_lib_facilities.h
。
最佳答案
你没疯。
已出版的书籍存在错误并非闻所未闻。通常,一本书的相应网站会有一个在线“勘误表”,其中包含等待下次打印的所有更正。
我刚查过。我在 Stroustrup 的网站上发现了一些拼写错误。这是他的书勘误表的链接:http://www.stroustrup.com/Programming/PPP2errata.html
我没有看到第 7 章的任何内容。但是如果你确定你发现了一个错误,请给他发一封电子邮件。他有可能回复并感谢您。
我认为你的代码块只是因为这一行而出现轻微错误:
cout << "> "; // print prompt
它在每次 token 消耗时打印 >
字符。
我觉得这样比较合理:
double val = 0;
cout << "> "; // print prompt the first time.
while (cin)
{
Token t = ts.get(); // get token from Token_stream ts
if (t.kind == 'q' )
{
break; // 'q' for quit
}
if (t.kind == ';' ) // ';' to print value
{
cout << "= " << val << '\n'; // print result
cout << "> "; // print new prompt
}
else
{
ts.putback(t); // put back token in Token_stream ts
}
val = expression(); // evaluate expression
}
关于c++ - 作者的代码是否正确? - B. Stroustrup 的 PPP 使用 C++ : Chapter 7, 第 7.2 节 - 输入和输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30724790/
#include using namespace std; int main() { const char *p[] = { "aa", "bb", "cc" }; const ch
PPP 和以太网发送 5000 字节的开销是多少? Point-to-Point Protocol 的帧大小: 8 字节MTU:500字节 以太网帧大小:18 字节MTU:1500字节 都发送 500
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
查看数据链路级标准,例如 PPP general frame format或 Ethernet ,不清楚如果校验和无效会发生什么。 协议(protocol)如何知道下一帧从哪里开始? 它是否只扫描下一
我想用 C++ 书做《编程原理与实践》第 12 章的练习。但我必须将链接器输入修改为“fltkd.lib;wsock32.lib;comctl32.lib;fltkjpegd.lib;fltkimag
我有一个 PPTP 服务器,我想在一些用户连接时做一些特别的事情(添加路由),这不应该影响其他用户。 我曾经在/etc/ppp/ip-up.d/** 中编写脚本,但我找不到一种方法来识别连接属于谁。
我正在尝试通过串行线 (RS-422) 在 iMX6 和台式机之间建立 PPP 连接。但在嵌入式系统方面,连接因错误而失败: Warning: couldn't open ppp database /
我有一个 GPRS 调制解调器,在嵌入式 Linux 中使用 PPP 连接;我需要在连接处于事件状态时获取调制解调器小时数,为此我想使用 AT 命令。但是我不知道如何将这些命令发送到调制解调器...
在this answer我读过有关 ppp.rb 的内容。它被称为“众所周知”,但在 Google 上找不到任何相关信息。 我发现它很有趣,我已将其改编为构建 my own version of ca
我正在尝试使用 USB 和 ppp 从我的 Android 设备连接到主机。 似乎有一个选项“adb ppp”可以使用。但我找不到解释关于如何使用它。这里有一个古老的讨论。但他们结束了对 adb 的修
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 1年前关闭。 Improve thi
我想将一个sf 对象转换成一个未标记的ppp。 (根据 this post,现在支持从 sf 到 ppp 的转换。) library(sf) #Initialise sf object pp Pla
为什么当我输入由空格分隔的字符串(在 while 循环之外)并且我尝试在屏幕上打印它们时,只有我输入的第一个出现,而在这个 while 循环中(见代码)它打印所有这些一个? //this one pr
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我阅读了 Stroustrup 的书 Programming Principles and Practice using C++。在第 12 章和第 441 页中有这段代码: // // This i
我们有一个解决方案,其中一些硬件连接到 Win 7 机器上的 COM 端口,并与我们的 Java 应用程序交互。硬件希望使用 PPP 服务器通过 TCP/IP 透明地连接到其他服务器。 有没有人对如何
什么是隧道(ssh 隧道和 ppp 隧道)?我在谷歌搜索,但很困惑..谁能提供一些关于这个隧道主题的好 Material ? 最佳答案 好吧,基本上你有 3 台机器: 您的机器 乙 服务器 C 远程机
在 Linux 中使用 pppd 之前,我使用了 PPP 连接,但现在我需要通过来自 C# 应用程序的 PPP 连接与硬件通信,而且我是 .net 的新手。有没有一种方法可以从应用程序中打开 PPP
我使用libpcap从PPP接口(interface)捕获数据,并添加过滤器如下: char filter_exp[] = "ip"; 但是当我在回调函数中嗅探数据包时,我发现ip数据包的格式是
我正在设计可扩展的 PPP [意味着它可以扩展到以太网、HDLC、ATM 等]。我一直在确定状态机是否由 PPP 堆栈处理[意味着我为 PPPStack 设计了基类,其中存在 FSM、编码、解码等]
我是一名优秀的程序员,十分优秀!