c++ - cin 到 vector 输入无限循环。为什么?

标签 c++ vector while-loop cin

好的,所以我四处浏览并在 hackerrank 上找到了 bubble sort 的以下实现.

现在,这对输入使用以下 while 循环:

while (cin >> t)

它在 hackerrank 网站上执行,但不在我的 IDE(CLion,如您所见)中执行,即该程序无限期地继续接受输入。我还发现网站上的许多帖子在将输入输入到 vector 时也使用或建议了类似的代码。我目前正在使用 stackoverflow 帖子中建议的其他方法,有些方法不太有效。我的问题是

  • 为什么程序会无限期地接受输入?
  • 是否存在违反任何条件/标志之类的条件?
  • 它在 C++14 或类似的东西中被删除了吗?

最佳答案

通常,当您运行一个可执行文件时,它的标准输入被绑定(bind)到一些交互媒体(终端或控制台)。这种媒体通常没有和结尾,除非您明确发送文件结尾(例如在 Linux 上使用 Ctrl+D)。所以循环永远不会终止,因为读取总是会阻塞并等待更多输入。

如果您将可执行文件的标准输出重定向为从文件中读取,则情况会有所不同。在典型的 shell 中,这就是您使用 < 实现的结果:

myprog < file.txt

这样,程序的标准输入将是文件的文件描述符,当您读取到文件末尾时,从中读取通常会发出 EOF 信号。

关于c++ - cin 到 vector 输入无限循环。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43298671/

相关文章:

java - java while 循环中数字的除数

python - 使用基于计数的迭代结构的初学者 Python 程序

c++ - Unresolved inclusion : Eclipse Not Showing "Includes" tab under "Paths and Symbols":

c++ - 在 MSVC 2013 上编译 Boost MPL 示例

c++ - 如何修复C++ vector 运算中的错误?

c++ - 创建并返回一个字符串 vector ——最有效的解决方案?

Java while-loop 从字符串字符创建文本字段

c++ - 模板代理方法无法编译

c++ - Wxwidgets回调

c++ - 迭代 vector/ map 数据结构 C++