问题标签 [ofstream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
6023 浏览

c++ - std::ofstream 的更快替代方案

我生成一组数据文件。由于文件应该是可读的,它们是文本文件(与二进制文件相反)。

为了向我的文件输出信息,我使用了非常舒服的std::ofstream对象。

一开始,当要导出的数据较小时,写入文件所需的时间并不明显。但是,由于要导出的信息已经积累,现在大约需要 5 分钟才能生成它们。

当我开始被等待所困扰时,我的问题很明显:请问有没有更快的替代 std::ofstream的方法?如果有更快的替代方案,是否值得重写我的应用程序?换句话说,节省的时间可以是 +50%吗?谢谢你。


更新:

我被要求向您展示生成上述文件的代码,所以您在这里 -最耗时的循环

0 投票
3 回答
341 浏览

c++ - 可以将未打开的 C++ ofstream 的数据写入文件吗?

未开封我的意思是:

所以我把文本放在一个ofstream没有调用.open()方法的地方。g++ 没有抱怨,所以也许我仍然可以保存数据?如何?

0 投票
4 回答
10331 浏览

c++ - C++ Ofstream 换行

我正在尝试在 ofstream 中创建一个新行,但它不起作用。所有内容都写在 OUTPUT.txt 的同一行

我也试过

一切都写在同一行,没有新的行......我错过了什么吗?

0 投票
2 回答
3292 浏览

c++ - ofstream泄漏内存

我有一个 C++ 类,它将其数据写入二进制文件std::ofstream。该类将数据存储为 aboost:shared_array但我已将其作为问题消除。问题在于write()ofstream.

问题是它似乎泄漏了内存。它运行的系统是 CentOS 64bit,GCC 4.1.2。

当应用程序运行时topfree可执行文件本身不会继续消耗内存(由 Netbeans 中的内存分析器备份),但可用系统内存量确实会随着时间的推移而减少。更重要的是,当应用程序退出时,这块内存不会被回收!

这是一个特殊的问题,因为其目的是以大约 50MB/s 的速度连续数小时写入磁盘。但是,一旦我们降低到大约 90MB 的可用系统内存,它似乎会“稳定”并且不会进一步减少,并且应用程序会继续正常运行。然而,它确实为其他正在运行的进程搞砸了系统,这很糟糕,mmkay。

下面是导致悲痛的类的一个稍微简化的版本。

ofstreams 在其他地方被初始化和销毁​​,但基本上它们仍然“永远”开放以供写入。

0 投票
2 回答
210 浏览

c++ - 正确选择文件流对象

应用程序使用 RapidXML 来编辑 XML 文件。编辑不是自动化的,偶尔会发生:XML 内容显示在 GUI 中,用户执行一些更改 XML 的操作。每个更改都必须立即保存到磁盘。

加载 RapidXML 文档对象需要将文件内容复制到字符串中。文档中的每次更改都会将文档对象的内容复制回文件中。

在此示例中,文件用于输入和输出。在这种情况下,是否应将单个std::fstream对象用于所有输入/输出操作?它将在应用程序启动时打开一次,用于输入/输出,并在应用程序结束时关闭。

std::ifstreamstd::ofstream或者,是否应该在需要执行文件输入/输出时使用的本地(临时)实例?例如std::ifstream,在开始时用于读取文件(打开、读取、关闭);类似地,std::ofstream当必须将 DOM 导出到文件(打开、写入、关闭)时使用实例。

我不关心这里的性能(由于应用程序的性质),但对在这种情况下正确选择文件流对象感到好奇。

0 投票
2 回答
3329 浏览

c++ - ostream/ofstream 继承问题

我正在编写一个 C++ 程序,我需要一些帮助来理解错误。

默认情况下,我的程序会打印到终端 (STDOUT)。但是,如果用户提供文件名,程序将打印到该文件。如果我正在写入终端,我将使用该std::cout对象,而如果我正在写入一个文件,我将创建并使用一个std::ofstream对象。

但是,我不想不断检查我是否应该这样写入终端或文件。由于std::coutstd::ofstream对象都从std::ostream类继承,我想我会创建一种print_output接受std::ostream对象的函数。在调用这个函数之前,我会检查我是否应该打印到一个文件。如果是这样,我将创建std::ofstream对象并将其传递给打印函数。如果没有,我将简单地传递std::cout给 print 函数。然后,打印功能不必担心打印到哪里。

我认为这是一个好主意,但我无法编译代码。我在这里创建了一个过于简化的示例。这是代码...

...这是编译时错误。

关于我为什么会收到这些错误的任何想法?我的代码是不是有问题,或者我的方法有什么根本性的问题?

谢谢!

0 投票
3 回答
26734 浏览

c++ - 如何在桌面上的文件夹中创建文本文件

我的项目有问题。我的桌面上有一个项目文件夹。我想创建一个文本文件并写一些包含这个文本文件的东西。那是我的代码:

ofstream example("/Users/sample/Desktop/save.txt");

但我想它可以运行其他mac。我不知道我应该为 save.txt 写什么地址。

谁能帮我?

0 投票
6 回答
1958 浏览

c++ - C++,std::ofstream,异常

这段代码有什么问题以及如何解决?

0 投票
2 回答
2880 浏览

c++ - std::ofstream 是可移动的吗?

我有这张在 MSVC10 中编译得很好的地图:

但是在使用启用了 C++0x 的 g++ 4.5 的 ubuntu 上,我收到以下错误消息:

/usr/include/c++/4.5/bits/ios_base.h|785|error: 'std::ios_base::ios_base(const std::ios_base&)' 是私有的

通过使用指针而不是对象,我解决了这个问题。
在网上搜索,我了解到流并不意味着被复制(原因解释得很好)。但我的问题是,std::ofstream 是可移动类型吗?如果是,它不应该允许它在标准容器中用作模板参数吗?
如果是,那么在这一点上 g++ 是否落后于 MSVC10?(这将解释为什么它适用于 MSVC)。我知道要求编译器编写者完全实现甚至不是最终的东西是愚蠢的,但我对未来很好奇。

使用 g++ 4.6.1 没有帮助。

编辑:阅读我进一步挖掘的评论,发现插入导致问题,而不是地图的声明。

阅读 Cubbi 的链接,我尝试了以下方法:

但仍然没有运气。g++ 抱怨使用 b 已删除的复制构造函数。

0 投票
3 回答
496 浏览

c++ - 使用 ofstream 写入文件时出错

我在使用 ofstream 将数字写入文件时遇到问题。当我写数字时,会有这样的字符 █ 而不是数字。我写入文件的方法是:

有什么方法是正确的,或者只是使用另一种文件写入器方法?谢谢。

编辑:

工作正常。谢谢