读书人

关于getchar()跟cin的疑问

发布时间: 2013-08-01 15:23:18 作者: rapoo

关于getchar()和cin的疑问
本帖最后由 jiuduying 于 2013-07-24 09:59:32 编辑


template<class T>
BTNode<T> * BinaryTree<T>::CreatBtree()
{
BTNode<T> * root1=new BTNode<T>;
T ch;
cin>>ch;
getchar();
if(ch=='#') root1=NULL;
else
{
//root=new BTNode<T>;
root1->data=ch;
root1->lchild=CreatBtree();
root1->rchild=CreatBtree();
}
return root1;
}

为何输入a,#还不停,这是为什么是因为getchar()和cin的区别吗???? getchar,cin,c++ 数据结构
[解决办法]
cin 是C++的输入方法
getchar();这个是C的方法。。字面意思就是获取一个字符。
你输入a #你的变量ch就为a了。
后面getchar的是# 如果你输入的是# a的话 就能停下来
[解决办法]
3楼……输入#a相当于你什么都没做,一开始就输入个结束符。
[解决办法]

char ch;

while(scanf("%c", &ch), ch != '#')
{
printf("%c", ch);
}
printf("\nEnd!\n");


[解决办法]
尽量不要混用C和C++风格的输入方式,因为两者的缓冲机制是不同的,有时候会有奇怪的问题。

读书人网 >C++

热点推荐