gpt4 book ai didi

C++ 入门 1.4.4 — EOF 的重要性以及如何编写没有 EOF 就结束的代码?

转载 作者:行者123 更新时间:2023-11-28 02:35:24 29 4
gpt4 key购买 nike

引用两个问题:

  1. Incorrect output from C++ Primer 1.4.4
  2. Confused by control flow execution in C++ Primer example

我的问题在这两篇文章中都得到了回答,但我想进一步深入研究。

首先,我知道这只是开始,但假设我制作了一个在设计的窗口中运行的功能齐全的程序。到那个级别,我是否已经知道如何实现 EOF?我不能指望运行我的程序的人知道他们需要点击 Control-Z

有没有一种方法可以实现一个特定的代码,使它不需要我输入无法识别的值?

在这些问题中还有一个人在某种程度上回答了 EOF 的重要性,但为什么程序甚至没有发布最后的 cnt - 1

假设我计算数字 10 10 10 20 20 20。如果没有 EOF,这只会显示“10 次重复 3 次”。程序为什么不至少输入“10 次重复 3 次和 20 次重复 2 次”减去最后一个带有空格的计数?

最佳答案

lets say I make a fully functional program that runs in a designed window. By that level, will I already know how to implement a eof? I can't expect someone running my program to know that they need to hit ctrl + z.

您可以明确告诉用户执行特定操作以结束输入,或者窗口本身的设计可以隐式告诉用户信息。例如,一个对话框可能会要求用户输入内容并在完成后单击“确定”按钮。

Is there a way to implement a specific code that functions so that it does not need me to type in an unrecognized value?

您似乎更愿意使用换行符来终止您的输入。这种用法的一个例子可以是 std::getline .而不是写作

while (std::cin >> val)

你可以改用

std::string line;
if (std::getline(std::cin,line))

并假设您的用户输入仅包含一行值。有很多其他方法可以类似地完成此任务,具体取决于您希望如何限制用户的输入。

Let's say I do the numbers 10 10 10 20 20 20. WIthout eof this will only show the "10 repeats 3 times." How come the program doesn't at least type in the count "10 repeats 3 times and 20 repeats 2 times" minus the final one with white space?

如果没有 eof,您的程序仍在执行 while (std::cin >> val)std::cin >> val 开始循环尚未收到无效输入。

自线 std::cout << currVal << " occurs " << cnt << " times" << std::endl;在那之后发生 while循环结束执行,您(还)不会在输入中看到有关三个 20 的任何信息。

关于C++ 入门 1.4.4 — EOF 的重要性以及如何编写没有 EOF 就结束的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27653537/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com