在调用close()之前将字符串写入文件

时间:2010-04-21 10:01:26

标签: c++

我正在使用ofstream()将数据写入文件,我希望程序执行这样一种方式:一旦值被分配到字符串变量,它应该继续将字符串写入文件,它应该在调用close()之前写。

需要的是, 我正在接受键盘的击键,我希望将它存储到文件中......所以当按下一个键时,我希望它被写入文件........

任何人都可以帮我在c ++中做到这一点.........

4 个答案:

答案 0 :(得分:4)

写入后,在游戏上调用flush()。这将导致实际写入输出而不是缓冲。

答案 1 :(得分:0)

标准C ++无法从键盘上读取单独的击键(我认为这就是你所问的)。为此,您需要使用操作系统和/或C ++实现特定功能。

答案 2 :(得分:0)

好吧,一个选项是在程序期间挂起std :: ofstream对象,根据需要写入它,然后在程序的最后关闭它。另一种选择是每次要记录某些内容时以附加模式打开文件,并在记录后立即关闭文件。第二个选项可能比第一个选项慢,特别是如果您经常登录。如果不经常进行日志记录,则第二个选项的优点是您不会阻止操作系统(特别是如果它是Windows)执行它可能要对该文件执行的操作。也就是说,我恳请你不要写另一个键盘记录器......那里已经有太多的东西已经浮出水面......大多数用途都远非合法。

答案 3 :(得分:0)

你可以继承std :: string,这样每当有人对它进行赋值时,它就会写入给定的std :: 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";
}