ofstream 相关问题

输出文件流是用于写入文件的C ++标准库对象。

为什么日志行在没有刷新的情况下丢失?

我有一个 C++20 中的简单类,可以将 Windows 平台的数据逐行记录到文件中。为了确保线程安全,我使用静态 std::mutex 来序列化写入操作。 然而,我遇到了...

回答 1 投票 0

如何正确将大向量写入文件?

我遇到了一个问题,不知道如何调试或修复它。我想要做的是将计算出的数据向量保存到文件中,以便稍后加载它,避免每次都需要重新计算......

回答 1 投票 0

Ofstream,使用变量来命名

对不起我的英语,但说西班牙语...... 这周,学习和工作这个项目,我想创建一个软件来制作文件(.us)... 例子 字符名称[50]; //或者字符串 cin>>姓名; 流媒体

回答 2 投票 0

我需要关闭 std::fstream 吗? [重复]

可能的重复: 我需要手动关闭 ifstream 吗? 我是否需要调用 fstream.close() 或者 fstream 是一个在销毁时关闭流的正确 RAII 对象吗? 我有一个本地 std::ofs...

回答 3 投票 0

基于Ofstream的类覆盖文件

我为我的一个C++项目创建了一个“File”类,它基于ofstream。这是简化的代码: 文件.h #包括 #包括 #包括 我为我的一个C++项目创建了一个“File”类,它基于ofstream。这是简化的代码: 文件.h #include <fstream> #include <mutex> #include <filesystem> #include <vector> class File { private: std::ofstream writer; static std::mutex file_mtx; std::filesystem::path path; public: File(); File(const std::filesystem::path &_path); void write(const std::vector<std::string> &lines); }; 文件.cpp File::File(const std::filesystem::path &_path) : path(_path) { // Create file std::lock_guard<std::mutex> lock(file_mtx); writer.open(path, std::ios::app); writer.close(); } void File::write(const std::vector<std::string> &lines) { std::lock_guard<std::mutex> lock(file_mtx); writer.open(path, std::ios::app); if (!writer.is_open()) return; for (const auto &line : lines) writer << line << "\n"; writer.close(); } std::mutex File::file_mtx; 我仅在需要提高效率时才使用 ofstream 打开文件,并且使用互斥锁来防止两个不同的对象同时写入同一文件。写入功能也在附加模式下打开(std::ios::app)。 这是我的“测试”代码: #include "file.h" int main(int argc, char *argv[]) { File test("./test.txt"); test.write({ "Hello", "World" }); File test2("./test.txt"); test2.write({ "Part", "2" }); return 0; } 我对同一个文件有两个不同的变量的原因是因为在我的实际代码中,必须在两个不同的作用域中访问该文件,因此必须定义两个变量。 这是文件的输出: Part 2 这是预期的输出: Hello World Part, 2 尽管互斥体在函数开始时被锁定,并且尽管文件以追加模式打开,但文件仍然会被覆盖。我想知道为什么会发生这种情况,以及为什么互斥体首先不能阻止文件被覆盖。 这是我的最小可重现示例: #include <fstream> #include <mutex> #include <filesystem> #include <vector> class File { private: std::ofstream writer; std::filesystem::path path; public: File(const std::filesystem::path &_path) : path(_path) { // Create file writer.open(path, std::ios::app); writer.close(); } void write(const std::vector<std::string> &lines) { if (!writer.is_open()) return; for (const auto &line : lines) writer << line << "\n"; writer.close(); } }; int main(int argc, char *argv[]) { File test("./test.txt"); test.write({"Hello", "World"}); File test2("./test.txt"); test2.write({"Part", "2"}); return 0; } 您的问题与互斥体无关。在您最初发布的代码中,该文件在构造函数中重新创建: File::File(const std::filesystem::path& _path) : path(_path) { // Create file std::lock_guard<std::mutex> lock(file_mtx); writer.open(path); writer.close(); } 然后将上面的代码替换为: File(const std::filesystem::path& _path) : path(_path) { // Create file writer.open(path, std::ios::app); writer.close(); } 此代码不会重新创建文件,但不会产生预期的结果,因为文件是以追加模式打开的。因此,每次运行程序时,都会附加文本: Hello World Part 2 Hello World Part 2... 您可能想要的是 Reset 方法: File(const std::filesystem::path& _path) : path(_path) { // no code here } void Reset() { // the code you originally placed in constructor } int main(int argc, char* argv[]) { File("./test.txt").Reset(); // ... }

回答 1 投票 0

std::ofstream,写入前检查文件是否存在

我正在使用 C++ 在 Qt 应用程序中实现文件保存功能。 我正在寻找一种方法来检查所选文件在写入之前是否已存在,以便我可以提示

回答 6 投票 0

如何在ofstream上进行fsync?

我想确保ofstream已写入磁盘设备。执行此操作的可移植方式(在 POSIX 系统上可移植)是什么? 如果我单独打开文件是否可以解决问题...

回答 5 投票 0

ofstream 以二进制模式在文件上写入空字符

我们面临设备重启的问题。我们正在树莓派板上的 Linux 操作系统中运行我们的应用程序。我们正在维护一个日志文件,每 10 秒向其中添加一次记录 b...

回答 3 投票 0

无序映射中ostream的麻烦[关闭]

我已经实现了Unordered Map容器和copyIf算法 模板 _OutputIter copyIf(_InputIter source_beg, _InputIter

回答 1 投票 0

fprintf 与 std::ofstream 的性能非常令人惊讶(fprintf 非常慢)

我正在运行一些基准测试,以找到在 C++ 中将大型数组写入文件的最有效方法(在 ASCII 中超过 1Go)。 所以我将 std::ofstream 与 fprintf 进行了比较(请参阅下面我使用的开关)...

回答 5 投票 0

std::ofstream 打开成功,但是当我调用 write 时出现错误“没有这样的文件或目录”

我有这样的cpp代码: std::ofstream fs; fs.open("a.txt", ios::out | ios::binary | ios::app); 如果(fs) { if(!fs.write(缓冲区, buffer_size)) { std::cout << strerror...

回答 2 投票 0

在 C++ 中将整数写入 .txt 文件

我是 C++ 新手,想在 .txt 文件上写入数据(整数)。数据位于三列或更多列中,稍后可以读取以供进一步使用。我已经成功创建了一个阅读项目,但是......

回答 2 投票 0

如何聚合 CSV 的行并删除列?

我的任务是聚合一个包含“年收入”和“人口”(按“地区”)的 CSV 文件。因此,如果 A 区有 3 个城市,人口分别为 100、123 和 50(与...

回答 1 投票 0

为什么下面的代码有效,但是如果我添加“fin.exceptions(ifstream::badbit | ifstream::failbit);”为了使第二次 try/catch 工作,我收到错误?

我的代码: int main() { 字符串路径 = "D:\myFile.txt"; 点 pointOfIllusion(1, 2, 3); 点 pointOfDesilusion(3, 2, 1); 流外 fout; fout.Exceptions(ofstream::b...

回答 1 投票 0

消失的内容C++写入文件

每当我重新运行代码后将数据写入文件时,文件的内容就会消失 #包括 #包括 使用命名空间 std; int main(){ 字符串

回答 1 投票 0

std::ofstream 在调试配置中进行调试时打开,但在发布配置中则不会打开 (Visual Studio 2022)

抱歉格式不当 - 这是我第一次在这里问问题。 我正在开发一个项目,其中涉及将一些信息写入文件。当我在调试环境中运行或调试程序时...

回答 1 投票 0

ifstream、ofstream 和 fstream 有什么区别? [重复]

在文件处理中,我遇到了ifstream、ofstream和fstream。谁能告诉我它们之间的主要区别?

回答 3 投票 0

如何获取 std::ofstream 中缓冲区的大小?

缓冲区的默认大小通常为 8192 字节,但这取决于实现。如何从 std::ofstream 对象获取当前缓冲区大小的实际值?

回答 1 投票 0

有没有办法制作可移植文件?

我正在尝试制作一个 C++ 函数,该函数在与二进制文件相同的目录中创建一个名为 log.txt 的文件并输出数据。 当我使用 ofstream 时,它会在源代码所在的位置创建文件。 如果我移动...

回答 1 投票 0

C++ 创建打印文件

我在分配时遇到了一些麻烦,我需要生成一个由数组中的结构组成的数据库文件。 Currently when the selection is made to print the table no noticeable e...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.