C ++如何仅在一定时间内读入输入?我可以在没有用户按Enter的情况下这样做吗?

时间:2015-08-16 02:51:43

标签: c++ input time timer keyboard

对于我正在编写的程序,我希望使用cin读取键盘上的字符,直到经过一定的时间。用户可以根据需要输入任意数量的字符(从0到尽可能多),程序需要将字符存储在数组中以供日后使用。理想情况下,用户不必在每个字母后按Enter键;程序应该能够读入输入而没有任何换行符,并在指定的时间结束后停止。我一直在寻找一段时间并尝试过不同的方法,包括使用getline,usleep甚至SDL,但我尝试过的任何方法都没有。这是我最近的尝试:

#include <iostream>     
using namespace std;

#include <time.h>

const float frame_length = 1;

int main () {

    char test[40];

    clock_t t;
    t = clock();
    int counter = 0;

    while (clock() - t < (1000000 * frame_length)){
        cin >> test[counter];
        counter ++ ;
    }

     cout << endl << "STOP" << endl;
}

这里的问题是循环在指定的时间之后没有停止(当我用cout线替换cin线时),用户仍然需要每次都按下回车键。是否可以按照我希望的方式阅读输入?如果它有帮助,我正在使用Mac。任何帮助将非常感激。

1 个答案:

答案 0 :(得分:1)

由于你说import pandas as pd from pandas import DataFrame from pandas.stats.api import ols def first_reg(A, B, C): df = pd.DataFrame({'A': A, 'B': B, 'C': C}) reg = ols(y=df['A'], x=df[['B', 'C']]) print reg def main(): user_input = raw_input('Enter String A: ') A = [int(x) for x in user_input.split()] user_input = raw_input('Enter String B: ') B = [int(x) for x in user_input.split()] user_input = raw_input('Enter String C: ') C = [int(x) for x in user_input.split()] first_reg(A, B, C) if __name__ == '__main__': main() ,你的程序将无法满足上述要求,因为deally, the user should not have to press enter after each letter; the program should be able to read in the input without any line breaks会阻止当前线程,直到用户点击ENTER键。你能做的就是不断监控关键状态。如果在给定时间内按下某个键,则将该字符添加到测试数组中。如果您在Windows环境中,可以使用GetAsycKeyState功能来实现此目的。

这是修改后的代码,

std::cin