只有当我在c ++(Thread)中按回车键时,代码如何进入下一步

时间:2012-04-12 07:19:02

标签: c++ multithreading while-loop enter

我在互联网上看到以下代码

DWORD qThreadID;
HANDLE hThread = CreateThread(0, 0, ThreadFn, &uiCounter, 0, &qThreadID);

// Loop until the user enters 'q'
char cChar = ' ';
while (cChar != 'q') {
    cout << uiCounter << endl;
    cChar = (char)getchar();
}

按键事件“Enter”如何处理? (当我调试它除了按“输入”按下没有其他按键功能工作) 感谢

3 个答案:

答案 0 :(得分:3)

getchar()从标准输入读取,缓冲在两者中 库和操作系统。通常的操作系统不会从读取中返回 控制台设备,直到输入;他们支持命令行 编辑,并要求输入键来完成输入。

答案 1 :(得分:1)

getchar()读取输入的单个字符。

但是,您的终端可能会对输入执行行缓冲,在您按Enter键之前不会向您的程序发送任何输入。

答案 2 :(得分:0)

因为enter输入的\n将被解释为EOF,因为命令行会认为这是用户输入的结束,而getChar()正在尝试阅读来自此流的单个字符缓冲区,因此如果您只是按enter而不输入前面的字符,则不会返回任何内容,请参阅msdn:http://msdn.microsoft.com/en-us/library/5231d02a%28v=vs.71%29.aspx