2010-04-21 107 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的每次有人做就可以了一项任务。这将导致输出实际写入而不是被缓冲。