gpt4 book ai didi

C++ std::cout 不向控制台写入任何内容

转载 作者:太空宇宙 更新时间:2023-11-04 16:17:25 25 4
gpt4 key购买 nike

请原谅我的笨拙,因为我才刚刚开始学习 C++,但我遇到了一些让我感到困惑的事情。以下代码是我按照 C++ Primer 第 5 版 PDF 中的示例进行的操作 here .

#include<iostream>
int main(){
int sum = 0, value = 0;
while (std::cin >> value)
sum += value;
std::cout << "Sum is: " << sum << std::endl; //this doesn't do anything
std::cin.ignore().get();
return 0;
}

现在出于某种原因,最后一个 std::cout 语句根本没有做任何事情,除了 std::cin.ignore() 之外,它让我感到困惑。 get() 这与 pdf 中的示例完全相同,但它什么也没做。最让我感到困惑的是,如果我从 while 循环内部编写 value,您会发现它不会无限重复出现;它在最后一个输入值之后停止,所以错误不应该出现在 while 循环的执行中。

感谢任何帮助,谢谢!

编辑:我正在使用 Visual Studio 2013 Ultimate

EDIT2:我使用的输入是 3 4 5 6

EDIT3:为了比较,这里是 C++ Primer 第五版的代码:

#include <iostream>
int main()
{
int sum = 0, value = 0;
// read until end-of-file, calculating a running total of all values read
while (std::cin >> value)
sum += value; // equivalent to sum = sum + value
std::cout << "Sum is: " << sum << std::endl; return 0;
}

所以我的和这个之间唯一的区别是std::cin.ignore().get()

最佳答案

while (std::cin >> value) 表示它不会停止,直到读取整数失败,即遇到 EOF 或非整数输入。

在 Windows 上,使用 ^Z(CtrlZ)输入 EOF

尝试输入:

1 2 3 4
^Z

它应该命中 cout 行。这完全是关于 cin.ignore() 东西的不同问题。

关于C++ std::cout 不向控制台写入任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21198734/

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