【发布时间】:2013-01-29 12:43:28
【问题描述】:
如果我从这样的控制台应用程序中获得stdin 的句柄:
HANDLE hStdIn = ::GetStdHandle(STD_INPUT_HANDLE);
然后我可以从中读取数据:
BYTE buff[32];
DWORD dwcbRead = 0;
BOOL bReadRes = ::ReadFile(hStdIn, buff, SIZEOF(buff), &dwcbRead, NULL);
我的问题是,我如何在读取它们之前知道有多少字节可用?
附言。如果没有数据可供读取,ReadFile 似乎会阻塞。
【问题讨论】:
-
不完全重复的问题。当 stdin 被重定向时,引用的链接(另一个问题)仅解决部分问题。 Anton Kovalenko 的回答向我们展示了
PeekConsoleInput可用于控制台标准输入。我们应该结合答案。
标签: c++ winapi console-application stdin