C++—输入输出流
创始人
2024-05-29 03:08:47
0

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
      • 1. 输入输出流
      • 2. 文件的输入输出
        • 2.1 写文件
        • 2.2 读文件


前言

提示:这里可以添加本文要记录的大概内容:

  1. 我的电脑为什么从 C 盘开始:A、B 盘为默认的磁盘驱动器,硬盘从 C 盘开始,但是目前丢弃了磁盘,不再使用;
  2. 关闭文件指针的作用:打开一个文件,文件指针指向一个文件结构,其还没有初始化,当对文件进行写入数据的时候,就需要对文件结构初始化,而其中存在一块区域和文件驱动挂接,由驱动具体的和磁盘文件产生关联;文件结构在构建的时候,还会存在一个缓冲区,实际上给文件写入数据,先是写入到缓冲区中,当退出的时候,不关闭文件指针,则直接将文件结构销毁掉,但是并不将缓冲区的数据通过驱动写入到磁盘中,如果当退出文件,正确关闭文件指针时,就会将缓冲区的数据通过驱动写入到磁盘中;

提示:以下是本篇文章正文内容,下面案例可供参考

1. 输入输出流

C++ 语言中并没有输入/ 输出语句,而是在标准库里包含了一个 I/O 流类库,它与标准模板库同为 C++ 标准库中最重要的组成部分。数据从一个对象到另一个对象的传送被抽象为 “流”。数的输入 / 输出就是通过 输入 / 输出流来实现的;

流是一种抽象的概念,负责在数据的产生者和数据的使用者之间建立联系,并管理数据的流动;

ios 提供了对流进行格式化输入输出和错误处理的成员函数。所有派生都是公有派生。istream 类提供完成提取(输入)操作的成员函数;而 ostream 类提供完成插入(输出)操作的成员函数,iostream 类是前两者的结合;

streambuf 是一个独立类,只是 ios 有一个保护访问限制的指针指向它。streambuf 的作用是管理一个流的缓冲区;

在流类库中,最重要的两部分功能为:标准输入 / 输出(standard input / output)和文件处理;在 C++ 的流类库中定义了四个全局流对象:cin、cout、cerr、clog;可以完成人机交互的功能;

  • cin 标准输入流对象,键盘为其对应的标准设备;
  • cout 标准输出流对象,显示器为标准设备;
  • cerr 和 clog 标准错误输出流,输出设备是显示器;
  • 其中,cin、cout 和 clog 是带缓冲区的,缓冲区由 streambuf 类对象来管理,而 cerr 为非缓冲区流,一旦发生错误立即显示;
  • 要使用这四个函数,必须包含头文件: 文件

【举例1】

// 字符串
int main()
{char str[256];int x;cout << "input int value: " << endl;cin >> x;while (cin.fail()) {   // 是否失败cout << cin.rdstate() << endl;   // 读取失败状态cin.clear(0);   // 状态清零cin.getline(str, 256);   // 将缓冲区清空cout << "input int value: " << endl;cin >> x;}cout << "x = " << x << endl;return 0;
}

在这里插入图片描述

【举例2】

int main()
{const int len = 256;char str[len];cin >> str;   // yhping hello newdata printcout << str << endl;return 0;
}

在这里插入图片描述
【注】使用 cin:在连续输入字符串的时候,会以空格作为分隔符,最终打印第一个空格之前的字符;
在这里插入图片描述
【分析】使用 getline:默认以 ‘\n’ 分割字符串;getline 也可以指定以什么字符结束输入:

getline(str, len, ‘#’); // 以 # 号结束输入

2. 文件的输入输出

C++ 根据文件(file)内容的数据格式,可分为两类:二进制文件和文本文件;

  • 文本文件:由字符序列组成,也成为 ASCII 码文件,在文本文件中存取的最小信息单位为字符(character);
  • 二进制文件:存取的最小信息单位为字节(Byte);

【举例 1】

int main()
{char str[256];FILE* fp = nullptr;errno_t tag = fopen_s(&fp, "F:/a.txt", "w");if (tag) {cout << "tag = " << tag << endl;cout << strerror_s(str, 256, tag) << endl;cout << "str = " << str << endl;return 0;}return 0;
}

在这里插入图片描述

【举例 2】

int main()
{char str[10]; int ar[10] = { 12, 23, 34, 45, 56, 67, 78, 89, 90, 100 };FILE* fp = nullptr;errno_t tag = fopen_s(&fp, "b.txt", "w");if (tag) {strerror_s(str, tag);cout << "str = " << str << endl;exit(1);}for (int i = 0; i < 10; ++i) {//printf("%d ", ar[i]);   // stdout 标准输出设备fprintf(fp, "%d ", ar[i]);   // 指定的文件中输出数据//sprintf(str, "%d ", ar[i]);   // 将数据格式化为字符串放到 str 中}fclose(fp);   // 关闭文件,防止文件指针fp = nullptr;return 0;
}

在这里插入图片描述
【注】写操作 ”w“:如果当前文件不存在,则创建文件,并写入数据;如果当前文件存在,则清空文件,重新写入数据;

2.1 写文件

【举例 1】

// 写入文件
#include 
int main()
{const int len = 10;int ar[10] = { 12, 23, 34, 45, 56, 67, 78 ,89, 90, 100 };ofstream ofile("a.txt");   // 输出if (!ofile) {cout << "file open error" << endl;exit(1);}for (int i = 0; i < len; ++i) {ofile << ar[i] << " ";   // 必须给出空格}ofile.close();return 0;
}

在这里插入图片描述

2.2 读文件

【举例】

// 读文件
#include 
int main()
{int val;ifstream ifile("a.txt");if (!ifile) {exit(1);}while (!ifile.eof()) {   // 读取文件ifile >> val;   // 从文件读取cout << "val = " << val << endl;//cin >> val;   // 从键盘读取}return 0;
}

在这里插入图片描述


相关内容

热门资讯

中国维护国际经贸秩序的立场坚定... 应美方请求,中美经贸高层会谈在瑞士举行。中方在充分考虑全球期待、中方利益、美国业界和消费者呼吁的基础...
来自雪豹之都西宁的“礼物” 雪豹文创。本报记者 陆广涛 摄本报记者 张慧慧“这个设计很有特点!”“妈妈,我想把这个雪豹毛绒公仔带...
330千伏玉树二回接入工程 保... 本报讯 (记者 董洁 通讯员 王宏霞) “地区电力调度控制中心已下令,现在请大家按照调度指令开展作业...
开展家庭教育指导 检护少年健康... 转自:法治日报□ 本报记者 徐鹏  近日,青海省人民检察院联合省人民法院、省妇联、省教育厅、省民政厅...
成都“送体到校”活动落幕 转自:成都日报锦观惠及35000余名学生成都“送体到校”活动落幕 本报讯 (成都日报锦观新闻...
成都蓉城豪取五连胜 转自:成都日报锦观客场4∶0梅州成都蓉城豪取五连胜 本报讯 (成都日报锦观新闻记者 胡锐凯)...
节后错峰游 成都是全国第三大热... 转自:成都日报锦观节后错峰游 成都是全国第三大热门目的地 本报讯 (成都日报锦观新闻记者 杨富...
李在明登记成为韩国总统候选人 转自:成都日报锦观李在明登记成为韩国总统候选人 韩国共同民主党总统候选人李在明10日正式登记成...
结婚领证不用户口簿 还需哪些材... 转自:成都日报锦观结婚领证不用户口簿 还需哪些材料?民政部就婚姻登记“全国通办”政策作七问七答 ...
平凡铸就伟大 劳动闪耀滇池——... 在大渔街道新村社区里,有这样一位令人敬仰的劳动者——刘琼丽,她不仅是民间画的坚守者,更是一名优秀的共...
中医药非遗展讲述“生生之道” 日前,“生生之道——中医药非遗主题展”在北京中国非物质文化遗产馆开幕。展览展示了近50项传统医药类非...
从历史长河到现实岸畔的幽远沉思 王昭君、蔡文姬、冼夫人、刘禹锡、陆游、李清照、柳如是、黄遵宪……这一个个耳熟能详的名字,从杜卫东的书...
当外国人也爱上中国字 阅读提示 4月20日是第16个联合国中文日,由河南省人民政府主办,联合国教科文组织、中日韩合作...
《几生修得到梅花:有所思堂诗稿... 本报讯 近日,朱小平诗集《几生修得到梅花:有所思堂诗稿》由中国华侨出版社再版。这本诗集情真意切,旨...
母爱,铭刻在骨头里 《母爱情深》(中国青年出版社)是厉彦林纪念母亲去世十周年出版的一部散文专著。书中,作者以深沉与哀思、...
宣布停火后 印控克什米尔地区再...   当地时间10日晚,印控克什米尔地区再次传出爆炸声。  地区官员奥马尔·阿卜杜勒(Omar Abd...
绿茵燃情 高原放歌 五月的西宁,丁香绽放,花香四溢。夏都西宁·雪豹之都·丁香之城的绿茵场上,一场足球盛宴——第二届“大美...
首届中国新疆民间艺术季优秀节目... 本报讯(记者 师晓琼 摄影报道)5月9日,首届中国新疆民间艺术季优秀节目巡演青海站活动在经久不息的掌...
佩斯科夫:俄会考虑30天停火提... △佩斯科夫(资料图)  总台记者当地时间5月10日获悉,俄罗斯总统新闻秘书佩斯科夫在接受美国媒体采访...
今天是母亲节 记得跟妈妈说 我... 123海报设计:卢文茂、蒋应杰来源:中国兰州网、兰州发布编辑:柴任翔