gpt4 book ai didi

c++ - 尽管设置了 EOF 标志,为什么 std::ws 会阻塞?

转载 作者:行者123 更新时间:2023-11-28 06:53:43 25 4
gpt4 key购买 nike

如果我运行以下代码并按一次 Ctrl+D,它会打印 EOF flag is set 但之后不会退出。显然,std::ws 的第二次调用似乎在等待进一步的输入,尽管设置了内部 EOF 标志。

#include <iostream>

int main()
{
std::cin >> std::ws;

if(std::cin.eof())
std::cout << "EOF flag is set\n";

std::cin >> std::ws;

return 0;
}

如果我将第二个 std::cin >> std::ws; 行替换为

float f;
std::cin >> f;

程序等待,而是立即退出。

标准中是否有任何内容可以解释这种差异?此外,是否有任何方法可以使 std::ws 的行为有所不同?

最佳答案

试试这个 block :

    while (!std::cin.eof()) {
std::cin >> std::ws;
}

std::cout << "EOF flag is set\n";

cin.eoffalse 时,这会重复读取 cin

关于c++ - 尽管设置了 EOF 标志,为什么 std::ws 会阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23444527/

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