c++ - GetAsyncKeyState 和 ofstream

标签 c++

嗨,我是 C++ 的新手,我正在寻找函数 GetAsyncKeyState,我做了一个小应用程序来获取“A”和“B”键,如果在名为 log.txt 的文件中按下,它工作正常,但我有一个问题:

我添加了endl;在每个 if 语句中,它结束该行并转到第二行并添加下一个字母,但是当我删除 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;
    }
}

最佳答案

endl 做了两件事。它在输出流中放置一个换行符,然后刷新它。冲洗可以让您立即看到结果。您可以在没有换行符的情况下手动调用 flush,如下所示:

logfile.flush();

此外,当您调用 GetAsyncKeyState 时,您应该过滤掉除最高有效位以外的所有内容,如下所示:

if (GetAsyncKeyState('A') & 0x8000)

阅读“返回值”下的文档以了解原因:http://msdn.microsoft.com/en-us/library/windows/desktop/ms646293%28v=vs.85%29.aspx

关于c++ - GetAsyncKeyState 和 ofstream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9020099/

相关文章:

c++ - 使用原始数据类型的默认构造函数进行默认初始化

java - opencv中哪个函数可以检测并去除物体的阴影?

c++ - 编译返回字符串 & 的函数的问题

c++ - FFmpeg 原生 AAC 解码器

python - 使用 C++/Python 对 wav 文件进行 FFT

c++ - 表达式必须有一个常量值

c++ - 如何在 C++ 中计算概率

c++ - 传递成员函数时替代 std::bind

c++ - 使用提供的 R 函数使用 gsl_function

c++ - 如何检查字符串是否在字符串数组中