【C++11】文件操作ifstream&ofstream

文件输入流

创建ifstream对象

使用ifstream类创建ifstream对象,所获取的对象能够像cin一样使用>>运算符从所绑定文件中取数据。

// 创建一个未绑定的文件输入流
ifstream in;

// 绑定文件输入流文件为1.txt
ifstream in("1.txt");
读取文件数据

使用ifstream对象读取文件中的数据:

ifstream in("1.txt");
if(in) { // 检察打开是否成功
    string s;
    while(in >> s) {
        // 将文件中的数据读出并存入s中
        in >> s;
        // 使用标准输出cout进行输出
        cout << s << endl;
    }
}

运行效果:
在这里插入图片描述

文件输出流

文件流的打开模式
模式含义
in只读模式(ifstream默认模式)
out只写模式(只读模式会抛弃文件已有数据,ofstream默认模式)
appappend追加,向文件末尾追加数据
ateat the end定位至文件尾
binary以二进制形式打开文件
创建ofstream对象

使用ofstream类创建ofstream对象,所获取的对象能够像cout一样使用<<运算符向所绑定文件中数据。

// 创建一个未绑定的文件输出流
ofstream out;
// 进行绑定以及打开模式指定
out.open("2.txt", ios::out);

// 绑定文件输入流文件为1.txt
// 并指定打开方式为binary和app(使用|连接多个模式)
ofstream out("2.txt", ios::binary | ios::app);
写入文件数据

使用ofstream向文件中写数据:

ofstream out("1.txt");
if(out) { // 检查是否失败
    for (int i = 0; i < 999; ++i) {
        out << "爱你" << i + 1 << "遍!" << endl;
    }
}
// 注意:关闭的是文件而非输出流对象
// 可以通过out.open()重新绑定文件
out.close();

运行结果:
在这里插入图片描述

文件输入输出示例

一个小实践:使用ifstream对象读取C盘下的一张图片,并使用ofstream将其存入同代码目录下的"3.png"中。

ifstream in("C:/Users/zhizi/Pictures/pic.png", ios::binary);
ofstream out("3.png", ios::app | ios::binary);
string s;
while(getline(in, s)) {
    out << s << endl;
}

运行效果(图片来源网络,侵权联系删除):在这里插入图片描述

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
ifstreamC++中用于输入文件流的类。它可以用来打开并读取文件的内容。在使用ifstream创建文件时,需要提供文件名和打开模式。常见的打开模式有in(表示以读取模式打开文件)和out(表示以写入模式打开文件)。如果文件不存在,ifstream会返回一个错误码。因此在使用ifstream创建文件之前,可以使用条件语句来判断文件是否成功打开。 例如,以下是使用ifstream创建文件的示例代码: ```cpp #include <iostream> #include <fstream> int main() { std::ifstream file("example.txt"); //以读取模式打开example.txt文件 if (file) { //判断文件是否成功打开 std::cout << "文件创建成功" << std::endl; //可以在这里进行文件的读取操作 } else { std::cout << "文件创建失败" << std::endl; } return 0; } ``` 在这个例子中,我们使用ifstream打开了名为example.txt的文件。如果文件存在并且成功打开,我们会收到一条"文件创建成功"的消息。否则,我们会收到一条"文件创建失败"的消息。使用ifstream创建文件时,需要确保文件名正确且文件存在,以及程序有足够的权限来进行文件的读取操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [fstream、ifstreamofstream创建新文件](https://blog.csdn.net/hcf999/article/details/77864456)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sophon、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值