cin与cout的tie关系

seu_05104106 2009-05-14 05:33:12
按理说,解除捆绑后,应该先输入s,再输出"input",可结果还是原来的样子,为什么呢??
#include <iostream>
#include <string>
using namespace std;
int main(){
string s;
cin.tie(0);
cout<<"input:";
cin>>s;
cout<<"s="<<s<<"\n";
system("pause");
}
...全文
564 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
seu_05104106 2009-05-15
  • 打赏
  • 举报
回复
这些我都明白,但跟我这个是不一样的!!
seu_05104106 2009-05-15
  • 打赏
  • 举报
回复
你给的这个网页我都明白,但跟我这个不是一回事,你可以编译看看!!
seu_05104106 2009-05-14
  • 打赏
  • 举报
回复
我试过加上cout.tie(0);

结果是一样的
lingyin55 2009-05-14
  • 打赏
  • 举报
回复
看下这个吧。


tie 函数可用 istream 或 ostream 对象调用,使用一个指向 ostream 对象的指针形参。调用 tie 函数时,将实参流绑在调用该函数的对象上。如果一个流调用 tie 函数将其本身绑在传递给 tie 的 ostream 实参对象上,则该流上的任何 IO 操作都会刷新实参所关联的缓冲区。

cin.tie(&cout); // illustration only: the library ties cin and cout for us
ostream *old_tie = cin.tie();
cin.tie(0); // break tie to cout, cout no longer flushed when cin is read
cin.tie(&cerr); // ties cin and cerr, not necessarily a good idea!
// ...
cin.tie(0); // break tie between cin and cerr
cin.tie(old_tie); // restablish normal tie between cin and cout

一个 ostream 对象每次只能与一个 istream 对象绑在一起。如果在调用 tie 函数时传递实参 0,则打破该流上已存在的捆绑。
liliangbao 2009-05-14
  • 打赏
  • 举报
回复
cin.tie(0); //表示打破输入流上已存在的捆绑,而没有指定新的绑定
cout <<"input:"; //而输出流没有改变,所以正常执行
jn989 2009-05-14
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20080204/15/5a869df9-ef4a-4f1b-ab73-13e7d02317f5.html

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧