对于我正在编写的程序,我希望使用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。任何帮助将非常感激。
答案 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