你好
我正在编写一个充当服务器并能够通过终端与用户交互的程序。如果我从标准输入中读取,我最多需要 140 个字符。 如果用户输入超过 140 个字符,我只想取前 140 个字符并忽略其余字符。
我尝试类似下面的代码:
struct timeval timeout;
fd_set readings;
char buf[140];
while (1) {
timeout.tv_sec = 15;
timeout.tv_usec = 0;
FD_ZERO(&readings);
FD_SET(STDIN_FILENO,&readings);
int rv = select(STDIN_FILENO+1,&readings,NULL,NULL,&timeout);
if (rv<0) {
cout << "ERROR select\n";
exit(1);
}
if (rv==0) {
cout << "Still Waiting...\n";
}
else {
cout << "A key was pressed\n";
if (FD_ISSET(STDIN_FILENO,&readings)) {
int num = read(STDIN_FILENO,&buf,140);
buf[num]='\0';
cout << buf << endl;
}
}
}
问题是 - 当我输入超过 140 个字符时,会打印前 140 个字符,但 read() 会在下一次迭代中读取其余数据并打印出来。 我如何清除标准输入以便在下一次迭代中忽略其余数据?
谢谢!!
最佳答案
关于c++ - 从标准输入中读取特定数量的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6062054/