gpt4 book ai didi

c++ - 在 rdbuf() 中感到困惑

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:52 27 4
gpt4 key购买 nike

这是我的简单代码:

#include <iostream>
int main()
{
int foo;
std::cin.rdbuf(std::cout.rdbuf());
std::cin>>foo; // what'll happen at this line? whatever I'll input will go to cout's buffer then to foo , right?
}

我在想上面的代码将设置 cin的缓冲区到 cout的缓冲区,所以当我输入一些数字时,它也会被输出。我想我对自己的程序感到困惑。谁能告诉我程序中发生了什么?

此外,如果我在末尾再添加一行:std::cout<<foo; ,然后它打印随机数,这意味着 foo 永远不会得到输入。那么总体情况如何?

最佳答案

流负责格式化并将 IO 委托(delegate)给 streambuf(因此它不仅可以缓冲,还可以执行 IO)。

因此对于 std::cin.rdbuf(std::cout.rdbuf()),您要求 cin 使用 cout 的 streambuf 进行输入,这可能还没有准备好输入。所以 std::cin>>foo 会失败。

关于c++ - 在 rdbuf() 中感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8680062/

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