嗨,我是C++新手,我正在寻找function GetAsyncKeyState,我做了一个小应用程序,如果在名为log.txt的文件中按下"A“和"B”键,它可以正常工作,但我有一个问题:
我在每个if语句中添加了endl;,所以它是该行的末尾,转到第二行并添加下一个字母,但当我删除endl;时,它没有放入任何字母>> (我删除了endl;,因为我希望所有字母都在同一行)
#include <iostream>
#include <windows.h>
#include <fstream>
using namespace std;
int main ()
{
ofstream logfile("log.txt", ios::out | ios::ate | ios::app);
while (true)
{
Sleep (100);
if (GetAsyncKeyState(0x41))
logfile << "a" << endl;
if (GetAsyncKeyState(0x42))
logfile << "b" << endl;
}
}发布于 2012-01-26 23:06:50
endl做了两件事。它在输出流中放入一个换行符,然后将其刷新。刷新使您可以立即看到结果。您可以手动调用flush而不使用换行符,如下所示:
logfile.flush();此外,当您调用GetAsyncKeyState时,您应该过滤掉除最重要的位之外的所有内容,如下所示:
if (GetAsyncKeyState('A') & 0x8000)请阅读“返回值”下面的文档以了解原因:http://msdn.microsoft.com/en-us/library/windows/desktop/ms646293%28v=vs.85%29.aspx
https://stackoverflow.com/questions/9020099
复制相似问题