如何在等待输入时执行一些命令?
像这样的东西:
while(/*taking input*/) {
sleep(15);
cout<<"You still there?";
//...
}
所以它要求输入,但在等待按下 ENTER 时它会执行命令。
可能吗?
编辑:
感谢所有建议:)
如何在等待输入时执行一些命令?
像这样的东西:
while(/*taking input*/) {
sleep(15);
cout<<"You still there?";
//...
}
所以它要求输入,但在等待按下 ENTER 时它会执行命令。
可能吗?
编辑:
感谢所有建议:)
使用 C++11 线程工具,您可以简单地生成一个“工作”线程,该线程在您等待输入时完成工作。
std::async
是一种异步获取操作结果的简单方法;您的问题描述不是很准确,所以我不知道我还可以在这里添加什么。
它可以在没有线程的情况下完成,但是您需要对输入进行异步访问,这通常不是跨平台的。
在马丁的评论之后,我实际上更清楚地看到了这个问题;在这种情况下,您最好的选择可能是寻找更抽象的 IO API,它们将提供非阻塞输入,或者基于操作系统特定的 API 创建您自己的 API。
您想生成另一个线程以与等待 i/o 的线程并行运行(在这种情况下来自 stdin 的输入)。在该生成的线程中等待 i/o 时运行您想做的任何事情。看看Boost 线程
如果您允许在细分之外添加一些内容,它将起作用:
[wolf@Targaryen]:~$ cat main.cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
while( getline(cin, s) and s != "" ) {
cout << "You still there?" << endl;
}
}
[wolf@Targaryen]:~$ r
adb
You still there?
sfcetgw
You still there?
wefew
You still there?
[wolf@Targaryen]:~$