我正在使用ofstream()将数据写入文件,我希望程序执行这样一种方式:一旦值被分配到字符串变量,它应该继续将字符串写入文件,它应该在调用close()之前写。
需要的是, 我正在接受键盘的击键,我希望将它存储到文件中......所以当按下一个键时,我希望它被写入文件........
任何人都可以帮我在c ++中做到这一点.........
答案 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";
}