关于getchar()和cin的疑问
本帖最后由 jiuduying 于 2013-07-24 09:59:32 编辑
为何输入a,#还不停,这是为什么是因为getchar()和cin的区别吗???? getchar,cin,c++ 数据结构
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;
}
[解决办法]
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++风格的输入方式,因为两者的缓冲机制是不同的,有时候会有奇怪的问题。