c++ - Cin 在 while 和 for 循环中被忽略

标签 c++ while-loop cin

好吧,我是 C++ 的新手,所以我在 Lippman 的 C++ Primer 5th Edition 中做一些练习,该函数甚至从不提示用户输入。我非常沮丧,因为我生成的代码都不起作用,而且答案键也不起作用。这只在编译和运行时产生“0”。任何帮助表示赞赏。在 x64 Mac 上编译。

#include <iostream>
int main()
{
    int sum = 0;
    for (int val; std::cin >> val; sum += val);
    std::cout << sum << std::endl;

    return 0;
}

最佳答案

该程序可以运行,只是运行方式与您预期的不同!

它希望您继续输入由空格分隔的数字,然后给出文件结尾(Windows 上的 ctrl-Z,Unix 上的空行上的 ctrl-d)或其他无效输入,以便 cin 进入失败状态。

cin 进入失败状态时,它会为 for 循环提供 false(由于使用重载的 bool 转换运算符隐式转换为 bool),然后结束。然后你的程序打印它们的总和。如果您没有设法输入任何数字,那么它会打印 0,因为这是 sum 的初始化值。

关于c++ - Cin 在 while 和 for 循环中被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39005039/

相关文章:

c++ - 如何读取输入流,但不提取c++中的输入流?

c++ - Qt:父子小部件。关闭单个子部件是否意味着关闭其他子部件?

java - 无法从 Java 服务器使用 boost C++ 客户端读取

c++ - 二叉搜索树 - 复制树

java - While 循环不能正常工作?

c - 每次按下按钮运行一次代码 - Arduino

c++ - 其他库中的编译器警告

r - 防止 Shiny 的应用程序破坏 while 循环

c++ - 等待输入 C++

c++ - 在再次读取 `std::cin` 之前如何清除它的内容?