C++的cin为什么不能生效
程序代码如下,问题在注释中。#include<iostream>#include<queue>#include<stdlib.h>usingnamespacestd;in...
程序代码如下,问题在注释中。
#include <iostream>
#include <queue>
#include <stdlib.h>
using namespace std;
int main()
{
priority_queue<int> q;
int a;
while(cin>>a)
{
cout<<"ok:"<<a<<endl;
q.push(a);
}
while(!q.empty())
{
cout<<q.top()<<endl;
q.pop();
}
//上面输入ctrl+z或者非int类型后,程序直接退出,cin好像根本不起作用了
cin.get(); //这里不起作用
system("pause"); //用系统命令行能暂停
int in=cin.get(); //这里cin也没起到作用
cout<<in<<endl; //这里总是-1
system("pause"); //这里还是可以暂停
return 0;
}
cin.get()在while里面退出后,以后都发挥不了作用了,不知道这是为什么 展开
#include <iostream>
#include <queue>
#include <stdlib.h>
using namespace std;
int main()
{
priority_queue<int> q;
int a;
while(cin>>a)
{
cout<<"ok:"<<a<<endl;
q.push(a);
}
while(!q.empty())
{
cout<<q.top()<<endl;
q.pop();
}
//上面输入ctrl+z或者非int类型后,程序直接退出,cin好像根本不起作用了
cin.get(); //这里不起作用
system("pause"); //用系统命令行能暂停
int in=cin.get(); //这里cin也没起到作用
cout<<in<<endl; //这里总是-1
system("pause"); //这里还是可以暂停
return 0;
}
cin.get()在while里面退出后,以后都发挥不了作用了,不知道这是为什么 展开
展开全部
输入ctrl+z以后,第一个while判断语句为假,第一个while语句不执行,也就是q.push(a)不执行,q为空,q.empty()为真,第二个while语句也不执行,没有语句执行,程序就退出来了...
追问
我先输入 5 回车,再输入 6 回车 再输入 7 回车,接着ctrl+z 回车
那么,第一个while会q.push(a);三次 。
第二个while只是为了打印出q里面的元素。
关键在于下面的cin.get(); 为什么会不起作用?
麻烦解答下。
追答
只要输入ctrl+z,输入缓存区就会直接关闭,如果想要再次输入,就得重新开启,你试着在第二二个while语句前加入cin.clear();这样就好了...
大雅新科技有限公司
2024-11-19 广告
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
展开全部
while(cin>>a)
这个是不是错了
int a;
cin>>a
while(a)
这个是不是错了
int a;
cin>>a
while(a)
追问
连这写和分开写没区别吧?
追答
你试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
using namespace std;
int main()
{
priority_queue q;
int a;
while(cin>>a)
{
cout<<"ok:"<<endl;
}
return 0;
}
using namespace std;
int main()
{
priority_queue q;
int a;
while(cin>>a)
{
cout<<"ok:"<<endl;
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询