windows下 C++ 关于cin输入的问题

我想写一个比如
void send(){
cin.getline();
}
如果过了五秒还没有输入 就自动退出函数 这个该怎么写

单纯用c++不调用系统函数的话,这是不能实现的,因为这需要用到多线程。不过下面这段程序你可以看一下。
#include<iostream>
#include<ctime>
#include<cstdio>
using namespace std;
void send(char* ch)
{
cout<<"in send"<<endl;
time_t start,end=0;
time(&start);
while((end-start)<5||cin.getline(ch,99))
{

time(&end);
if((end-start)>5)
{
break;
}
cout<<end-start<<endl;
ungetc('\n',stdin); //注释这一行,就最后就可以输入 ,加上这一行5秒之后退出这个函数
}
cout<<"leave send"<<endl;
}
int main(void)
{
char ch[100];
send(ch);
cout<<"in main"<<endl;
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-10-19
可以调用延时函数:Sleep(int n); //n表示毫秒数,延时5S,Sleep(5000);
使用时要添加头文件: #include <Windows.h>追问

这样写么
cin.getline();

sleep(5000)
这样写的话 我不输入就一直卡在cin这里 sleep没用呀

本回答被网友采纳
第2个回答  2014-10-19
开个线程处理输入,定时器每隔五秒查看线程,如果线程还在就中断。
第3个回答  2016-03-28
cin 按书本来保证行,我就是那样搞定的

c++用cin输入数组问题
只能先用一行输入a,再用一行输入b[a]——因为cin是从右边开始压栈的,就是先压b[a]再压a,显然压b[a]时还不知道a是多少,后面输入了a,但改变不了已经压栈了的内容。就是说这种情况一定要保证操作b[a]时a必须是已知的。但这种东西与编译器关系很大,也许后来的编译器异想天开,弄个别致的...

c++中有关cin的问题
value 是int型变量,按下Enter键时,由于读入错误类型值,导致输入流cin的状态变为不可用,于是退出循环。cin的几种状态:cin.eof()cin.bad()cin.fail()cin.good()当前三者 cin.eof() & cin.eof() & cin.fail() 为0时,此时cin.good() 为1,否则cin.good()为0 楼上提到的返回类型为void...

关于C++输入cin的问题,下面的程序,如果输入的不合法,那就将陷入死循环...
例如你输入的数据为a,然后回车,此时输入缓冲区中就有两个字符,一个是‘a’,一个是回车换行符‘\/n’,接着程序读取,由于类型不匹配,读取失败,并没有读走输入缓冲区中的数据,也就是说,此时输入缓冲区中还是‘a’,和‘\\n’,

c++用cin输入字符问题
cin这是输入函数,cout才是输出。可以改为:cout<<"("<<x<<","<<y<<")";如果你不要小括号就是:cout<<x<<","<<y;希望对你有帮助...

C++ cin输入格式的问题
很简单,你想在输入x y时用逗号分隔,那么其实输进电脑的是三个值,这三个值分别为"x",",","y",此时就要再定义一个字符型变量。main函数如下:int main(){ double x,y;char c;cin>>x>>c>>y;if(fabs(x*x+y*y-1)<0.001) cout<<"Y"<<endl;else cout<<"N"<<endl;return...

C++问题 关于cin输入流的问题 如何提取cin的缓冲区的内容呢?
1、按下enter会把之前输入的字符(包括回车符自己)送入到输入缓冲区,但并不会刷新输入流。输入流是C++自己实现的,流的使用也由它管理,C++并没有接收到回车符就刷新输入缓冲流一说。在输入缓冲区的内容被读取完之前(除\\r\\n等),它不会再提示用户作新的输入,所以表面上看起来,用户回车后它的...

c++ cin的问题
cin是从标准输入设备读入,默认的就是键盘啦 它也不是一下子就进到内存缓冲区的……先进到内存中的键盘缓冲区,内存需要数据是才从键盘缓冲区内读数据,比如 char a;cin>>a;输入了asdfasdf,内存不可能也不可以让他们都进主缓冲区去,只需要一个可打印字符赋给字符变量a 其他的还在键盘缓冲区呢 ...

C++中Cin的问题
这个得自己实现。用getch()吧,输入不回显,然后用户输入一个字符你输出一个*就是了。但是你得判断诸如回车,退格等特殊键的行为。示例如下:include <fstream> include <iostream> include <string> include <conio.h> using namespace std;int main(){ char tmp[256] = {'\\0'};int index = ...

C++ 关于cin输入
\/\/注意着两张图片,第二张 我把cin一行注释起来了,由于类型不同,int a并没有储存你输入的a的adcll码,

C++里关于cin问题
cin可以看成把输入传入一个变量中,但是"age"是一个字符串,在内存中没有固定地址,所以不知道往那里传,如果你想要去掉引号,则可以看成一个变量名,但是需要加上一个变量定义,就是加上一句 string age;

相似回答