c++ ofstream用法
C++中的ofstream是一个输出流,可以用于将数据写入到文件中。在这篇文章中,我们将会详细介绍如何使用ofstream。 1. ofstream基本用法
先来看一下ofstream的初始化以及写入的基本用法: ```c++
#include std::ofstream ofs(\"demo.txt\"); ofs << \"Hello, World!\\n\"; return 0; } ``` 这个例子中,我们首先创建了一个ofstream对象和要写入的文件名(\"demo.txt\")。然后,我们使用“<<”运算符向文件中写入一些文本。当程序执行结束时,自动关闭文件。 2. 文件模式 ofstream流可以打开文件的多种模式,这些模式对于不同的文件使用情况可以选择不同的打开方式。以下是一些常用模式: - ios::out:打开文件用于写入,如果文件不存在则创建文件。 - ios::app:打开文件用于追加写入,如果文件不存在则创建文件。 - ios::binary:以二进制方式打开文件。 - ios::trunc:如果文件已经存在,则在打开文件之前清空文件内容。 对于以上模式,我们可以将它们组合使用,比如: ```c++ ofs.open(\"demo.txt\打开文件并清空内容 ``` 3. 写入各种基本类型数据 除了写入文本外,我们还可以通过ofstream流将各种基本类型数据打印输出到文件中。以下是一些常见的例子: ```c++ #include // 打开文件 std::ofstream ofs(\"demo.txt\"); // 数值类型 int i = 123; ofs << i << std::endl; float f = 3.14f; ofs << f << std::endl; double d = 3.1415926; ofs << d << std::endl; long long ll = 1234567; ofs << ll << std::endl; // 字符类型 char c = 'A'; ofs << c << std::endl; std::string str = \"Hello,World!\"; ofs << str << std::endl; // 关闭文件 ofs.close(); return 0; } ``` 在这个例子中,我们首先打开了文件。然后,我们使用“<<”运算符将整型、浮点型、双精度型、长整型、字符型和字符串类型的数据写入文件中。我们关闭了文件。 4. 写入自定义数据类型 如果我们要将自定义的数据结构写入文件,我们需要提供一种方法将这种数据类型序列化为字符串。这里的“序列化”是指将对象转换为一串字符数据,在以后从文件里读取数据时,我们可以再把这些数据反序列化还原为原始的对象。这个过程涉及到一些相关的概念,比如多重继承、针对虚函数的反序列化等,这超出了本文的讨论范围。我们这里只是简单的介绍一个通用的序列化方法,即将自定义数据类型的每一个成员都按照一个预定的格式输出到文件中。 下面是一个简单的例子,假设要将一个名为“Person”的自定义数据类型写入文件。这个自定义数据类型包含3个成员变量:“name”、“age”和“gender”。 ```c++ #include Person() : mName(\"\"), mAge(0), mGender(false) {} Person(const std::string& name, int age, bool gender) : mName(name), mAge(age), mGender(gender) {} // 将自定义数据类型序列化为字符串 std::string ToString() const { std::ostringstream oss; oss << \"Person { name = \" << mName << \ << \ return oss.str(); } private: std::string mName; int mAge; bool mGender; }; { // 打开文件 std::ofstream ofs(\"demo.txt\"); // 写入自定义数据类型 Person person(\"Tom\ ofs << person.ToString() << std::endl; // 关闭文件 ofs.close(); return 0; } ``` 在这个例子中,我们首先定义了一个名为“Person”的自定义数据类型。这个数据类型有一个构造函数,然后我们把“ToString”函数定义为一个将数据对象按照一定格式写成字符串的函数。我们使用“<<”运算符将对象写入到文件中。 以上就是ofstream的基本用法。这个流非常适合将数据写入到文件中,也为数据的读取和存储提供了极大的便利。 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务