C++ 在rdbuf()中感到困惑 这是我的简单代码: #包括 int main() { int foo; std::cin.rdbuf(std::cout.rdbuf()); std::cin>>foo;//这一行将发生什么?我输入的内容将进入cout的缓冲区,然后进入foo,对吗? }
我所想的是,上面的代码会将C++ 在rdbuf()中感到困惑 这是我的简单代码: #包括 int main() { int foo; std::cin.rdbuf(std::cout.rdbuf()); std::cin>>foo;//这一行将发生什么?我输入的内容将进入cout的缓冲区,然后进入foo,对吗? },c++,C++,我所想的是,上面的代码会将cin的缓冲区设置为cout的缓冲区,所以当我输入一些数字时,它也会被输出。我想我对自己的节目感到困惑。有人能告诉我节目里发生了什么吗 另外,如果我在末尾再添加一行:std::cout我在想,但不确定foo没有被输入的原因是因为在您将cin的缓冲区设置为cout之后,该行 std::cin >> foo; 实际上会变成 std::cout >> foo; 其中>>运算符的使用不正确,因此foo不会发生任何变化 然后,当你使用 std::cou
cin
的缓冲区设置为cout
的缓冲区,所以当我输入一些数字时,它也会被输出。我想我对自己的节目感到困惑。有人能告诉我节目里发生了什么吗
另外,如果我在末尾再添加一行:
std::cout我在想,但不确定foo没有被输入的原因是因为在您将cin的缓冲区设置为cout之后,该行
std::cin >> foo;
实际上会变成
std::cout >> foo;
其中>>运算符的使用不正确,因此foo不会发生任何变化
然后,当你使用
std::cout << foo;
std::cout流负责格式化并将IO委托给streambuf(因此,streambuf的作用不仅仅是缓冲,它还执行IO)
因此,使用std::cin.rdbuf(std::cout.rdbuf())
您要求cin使用cout的streambuf进行输入,这可能还没有准备好进行输入。所以std::cin>>foo将失败。完美的解释,非常感谢:)
std::cout << foo;