2010-04-21 109 views
0

我正在使用ofstream()將數據寫入文件,我希望程序執行這樣一種方式,即應該儘快將該字符串寫入文件中值被賦值給字符串變量,並且它應該在調用close()之前寫入。在調用close之前將字符串寫入文件()

需要的是, 我正在獲取鍵盤的按鍵,並且我希望它將它存儲到文件中......所以當有按鍵被按下時,我希望它被寫入到文件中。 .......

誰能幫我做,在C++ .........

+0

太模糊 - 你需要舉一個你希望實現的具體例子。 – 2010-04-21 10:02:16

+0

我正在獲取鍵盤的按鍵,並且我希望它將它存儲到文件中......所以當有按鍵被按下時我希望它被寫入文件........ – Navin 2010-04-21 10:05:51

+0

把這些額外的信息加入到你的問題中,讓你的問題更清楚。這樣你更有可能得到很好的答案。 – 2010-04-21 10:08:25

回答

4

呼叫flush()

0

標準C++已經沒有辦法從鍵盤讀取單獨按鍵的(我認爲這是你在問什麼)。爲此,您需要使用操作系統和/或C++實現的特定功能。

+0

@Neil Butterworth:感謝您的回覆......我抓住了擊鍵,只要我一記錄下擊鍵就能將其寫入文件中,但不會在程序結束時... – Navin 2010-04-21 10:27:04

0

那麼,一種選擇是在程序的持續時間內掛在std :: ofstream對象上,根據需要寫入,然後在程序的最後關閉它。另一種選擇是在每次要記錄日誌並在記錄後立即關閉文件時以追加模式打開文件。第二種選擇可能會比第一種方式慢,特別是如果您經常記錄日誌。如果日誌記錄不經常發生,第二個選項的優點是不會阻止操作系統(尤其是Windows)執行它可能想要執行的操作。也就是說,我懇求你不要寫另一個鍵盤記錄器......有太多的東西已經浮出了那裏......而且大多數用途遠非合法。寫之後的ofstream的

#include <fstream> 
#include <string> 

class foo : public std::string 
{ 
    std::ofstream& ofs; 

public: 
    foo(std::ofstream& ofs) : ofs(ofs) { } 

    foo& operator=(const std::string& string) 
    { 
     using namespace std; 

     if (ofs) 
      ofs << string << endl; 
    } 
}; 

int main() 
{ 
    std::ofstream ofs("test.txt"); 
    foo test(ofs); 

    test = "Write this to a file"; 
    ofs.close(); 
    test = "This won't be written"; 
} 
0

你可以繼承的std :: string,以便它寫入到一個給定的std :: ofstream的每次有人做就可以了一項任務。這將導致輸出實際寫入而不是被緩衝。