在C++中创建不可见的文本文件

Create an invisible text file in C++

本文关键字:文本 文件 C++ 创建      更新时间:2023-10-16

简单地说,我有一个在FLTK Gui工具包中使用的浏览器小部件,可以使用这样的文件加载。

browser::load("textfile.txt");

问题是我不想创建一个物理文本文件,只是一个不可见的文件,所以我可以将其用作上面的 browser::load 的参数。 我计划通过加载我将要放置在浏览器中的值来使用这个不可见的文本文件......然后像这样使用它。

browser::load("invisible_textfile.txt");

C++可以做到这一点吗?

我已经尝试使用可能与此无关的ifstream::rdbuf()。 我什至不确定该怎么称呼它,所以我现在只是称它为不可见的文本文件。

我使用的是 Windows 7 64 位。 MinGW编译器。

假设您要添加的内容等效于这样的文本文件:

One
Two
Three

但是您不希望拥有文本文件。因此,一段可以做同样事情的代码是这样的:

const char *lines[] = { "One", "Two", "Three", 0 };
for(int i = 0 ; lines[i] != 0 ; ++i)
    browser.add(lines[i]);

add重载的文档链接

如果您需要有关如何lines数据的更多帮助,请优化您的问题,或者提出一个新问题。

这在很大程度上取决于browser::load()内部的实际操作,但让我们假设它会查找您的文件名并加载它。

您可能已经知道如何读取/写入标准文件(例如 http://www.cplusplus.com/doc/tutorial/files/)。现在,如果您只想对用户隐藏文件,则可以设置特定于操作系统的隐藏标志(例如Windows)。我假设这不是你在这里真正想要完成的。(显然,您也可以创建一个再次删除的临时文件,但这也不是一个优雅的解决方案。

您可能想要使用的是命名管道。在 Linux 下,您可以使用mkfifo创建这些文件,然后通过这些文件对象流式传输内容。

不过,一般的一点是,除非browser API允许您向其传递包含文本文件或stringstream的完整字符串,否则您将需要一个文件对象。

如果您唯一的目标系统是NTFS,那么在这里创建虚拟文件有一个很好的答案:如何创建虚拟文件?

但最后,您可能想要创建一个实际文件(在您的情况下可能是临时文件)。我建议将该文件放入系统临时路径中。