C++的输入输出概述

news2025/1/15 20:33:23

🐶博主主页:@ᰔᩚ. 一怀明月ꦿ 

❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C++

🔥座右铭:“不要等到什么都没有了,才下定决心去做”

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀

目录

🐰 C++的输入输出

🌸C++的输入输出

🌸C++的输入输出流

🏡iostream类库中有关的类

🌸用流成员函数put输出一个字符

🌸用流成员函数write输出字符串

🌸用流成员函数get获取一个字符

🏡1.无参数的get

🏡3.有三个参数的get函数

🌸用流成员函数getline读取字符串

🌸用流成员函数read读取字符串


🐰 C++的输入输出

🌸C++的输入输出

C++的输入输出包括以下三个方面的内容:

(1)对系统指定的标准设备的输入输出,如键盘输入数据,输出到显示器屏幕,这就是标准的输入输出

(2)以磁盘文件为对象进行的输入输出,从磁盘文件输入数据给程序,程序的数据输出到磁盘文件,这就是文件的输入输出(文件的I/O)

(3)对内存中指定的空间进行输入输出。通常是指一个字符数组为储存空间。这种输入输出为字符串输入输出(串I/O)

🌸C++的输入输出流

🏡iostream类库中有关的类

C++系统提供了输入输出的iostream类库。在iostream类库中包含许多用于输入输出的类。ios是抽象基类,由它派生出istream类、ostream类。istream类支持输入操作,ostream类支持输出操作。iostream类是从istream类和ostream类通过多重继承而派生的类,iostream类支持输入输出操作。

为了实现文件操作,C++的iostream类库中派生定义了用于文件操作的类:

fstreambase类:这是一个公共基类,文件操作中不直接使用这个类

ifstream类:派生于fstreambsae和istream,用于对文件进行提取操作

ofstream类:派生于fstreambase和ostream,用于对文件进行读入操作

fatream类:派生于fstreambase和iostream,用于对文件进行提取和读入操作

strstreambase是字符串流类基类,它派生定义了用于字符串操作的类:istrstream、ostrstream等

iostream.h(iostream)头文件中定义的类有ios、istream、ostream、iostream等

iostream.h(iostream)头文件包含了对输入输出流进行操作所需的基本信息。除此之外,还定义了以下4种流对象:

(1)cin:是istream的派生类istream_withassign的对象,是标准输入设备(键盘)输入到内存的数据流,所以称为标准输入流

(2)cout:是ostream的派生类ostream_withassign的对象,是从内存输出到标准输出设备(显示器)的数据流,所以称为标准输出流

(3)cerr和clog:作用相似,像输出设备(显示器)输出出错信息。它们区别在于cerr提供不带缓冲区的输出,clog提供带缓冲区的输出

(4)从键盘输入时使用cin流,向显示器输出时用cout流。向显示器输出出错信息时用cerr或clog流。

🌸用流成员函数put输出一个字符

put

put的原型:

ostream& put (char c);

char c:输出的是单个字符

ostream& 返回类型是通用输出流的基类对象的引用,因此可以连续输出

类似于putchar

注意事项:

put函数的实参可以是:1.字符变量(如果是整形变量,会当作ASCII码值,输出对应ASCII码值的字符)2.可以是ASCII码值或者整形表达式

由于返回类型是通用输出流的基类对象的引用,所以可以来连续调用put函数

#include<iostream>
using namespace std;
int main()
{
    char a='m';
    cout.put(a)<<endl;
    cout.put('m')<<endl;
    cout.put(65)<<endl;
    cout.put(65).put(66).put(67)<<endl;
}
结果:
m
m
A
ABC

🌸用流成员函数write输出字符串

write

write的原型:

ostream& write(const char* s,streamsize n);

const char* s:输出字符串的首地址

streamsize n:输出字符串的个数

ostream& 返回类型是通用输出流的基类对象的引用,因此可以连续输出

类似puts

#include<iostream>
using namespace std;
int main()
{
    char a[]="I Love You";
    int lenth=(int)strlen(a);
    cout.write("I Love You", lenth).put('\n');//可以调用put输出'\0'来进行换行
    cout.write(a, lenth)<<endl;//也可以直接使用endl,进行换行
    return 0;
}
结果:
I Love You
I Love You

🌸用流成员函数get获取一个字符

🏡1.无参数的get

get

从输入流中提取一个字符

get的原型:

int get();

int 返回类型为整形(int)

注意:不管是读还是写数据,都是在缓冲区拿去数据,如果缓冲区有数据,就不会让你从键盘输入

#include<iostream>
using namespace std;
int main()
{
    char c;
    int b;
    cout<<"第一次:输入两个字符"<<endl;
    c=cin.get();//这里get这个函数返回值是字符ASCII值,是int类型,给到字符c时隐式转化为ASCII值对应的字符,输出时就是该字符
    b=cin.get();//这里get这个函数返回值是字符ASCII值,是int类型,给到b还是ASCII值,但是put会输出对应的字符
    cout.put(c).put('\n');
    cout.put(b)<<endl;
    getchar();//getchar()用于清空缓冲区
    getchar();//getchar()用于清空缓冲区
    getchar();//getchar()用于清空缓冲区
    cout<<"第二次:输入两个字符"<<endl;
    int x=cin.get();//这里get这个函数返回值是字符ASCII值,是int类型,给到字符c时隐式转化为ASCII值对应的字符,输出时就是该字符
    int y=cin.get();//这里get这个函数返回值是字符ASCII值,是int类型,给到b还是ASCII值,但是put会输出对应的字符
    cout.put(x);
    cout.put(y)<<endl;
    return 0;
}

🏡2.有一个参数的get

get的原型:

istream& get(char& c);

char& c:读取的数据给变量c

istream& 返回类型是通用输入流的基类对象的引用,因此可以连续输入

#include<iostream>
using namespace std;
int main()
{
    char str;
    char ptr;
    cout<<"请输入数据"<<endl;
    int p=cin.get();
    cin.get(str).get(ptr);
    cout<<p<<" "<<str<<ptr<<endl;
    return 0;
}
结果:
请输入数据
abc
97 bc

🏡3.有三个参数的get函数

get的原型:

istream& get(char* pch,int nCount,char delim);

char* pch:从流中读取字符,然后把首地址放到pch

int nCount:从流中读取字符字符的个数,只能读取到nCount-1个字符,因为最后一个位置放'\0'

char delim:从流中读取字符,如果读取到字符delim则提前结束读取

istream& 返回类型为通用输入流的基类对象的引用,因此可以连续输入

#include<iostream>
using namespace std;
int main()
{
    char arr[20];
    cin.get(arr, 7, ' ');
    cout<<arr<<endl;
    return 0;
}
结果:
abcd e
abcd

🌸用流成员函数getline读取字符串

getline从输入流中读取一行字符

getline的原型:

istream& getline(cahr* pch,int nCount,char delim);

char* pch:从流中读取字符,然后把首地址放到pch

int nCount:从流中读取字符字符的个数,只能读取到nCount-1个字符,因为最后一个位置放'\0'

char delim:从流中读取字符,如果读取到字符delim则提前结束读取

istream& 返回类型为通用输入流的基类对象的引用,因此可以连续输入

#include<iostream>
using namespace std;
int main()
{
    char arr[20];
    cin.getline(arr, 7, ' ');
    cout<<arr<<endl;
    return 0;
}
结果:
abcd e
abcd

🌸用流成员函数read读取字符串

read用于从输入流中读取指定数目的字符,并将读取的字符存储

read的原型:

istream& read(char* pch,int nCount);

char* pch:从流中读取字符,然后把首地址放到pch

int nCount:从流中读取字符字符的个数,能读取到nCount个字符

istream& 返回类型为通用输入流的基类对象的引用,因此可以连续输入

#include<iostream>
using namespace std;
int main()
{
    char arr[20];
    cin.read(arr, 7);//这里能读到nCount个字符,注意get(char* pch,int nCount,char delim)和getline(char* pch,int nCount,char delim)只能读取nCount-1个字符
    cout<<arr<<endl;
    return 0;
}
结果:
abcdef
abcdef

🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/435697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前缀和2:2615等值距离和

2615. 等值距离和 - 力扣&#xff08;LeetCode&#xff09; 做这道题之前&#xff0c;先完成1685. 有序数组中差绝对值之和 - 力扣&#xff08;LeetCode&#xff09; 一般性的&#xff0c;我们能在这类题目中总结出以下规律&#xff1a; 求解有序数组中每个元素与q的差值res时…

Traceroute的原理及应用挑战

1 Traceroute简介 Traceroute 是继 ping 之后使用最广泛的网络诊断工具之一&#xff0c;因为它简单且应用范围非常广泛。 traceroute 的可能应用范围从简单的网络错误诊断到揭示底层网络拓扑的大型扫描。然而&#xff0c;由于 traceroute 不是在考虑现代网络技术的情况下构建的…

让你轻松入门APP自动化测试:UiAutomator2框架基础解析

目录 前言 一、uiautomator/uiautomator2的前生今世 1.官方文档介绍 2.梳理一下脉络 3.三款框架对比 二、uiautomator2简介 1.项目组成 2.工作原理 三、环境搭建 1.安装uiautomator2 2.初始化设备 3.init时都干了啥&#xff1f; 四、基础操作 1.连接设备 2.命令…

IEEE SPL | 基于图注意力机制的音频语意概述

本文由哈工程智能信号处理组与悉尼科技大学、萨里大学合作&#xff0c;发表于IEEE信号处理学会期刊IEEE Signal Processing Letters&#xff0c;论文一作为2020级硕士研究生肖飞扬。 论文链接&#xff1a;https://arxiv.org/abs/2304.03586 论文代码&#xff1a;https://github…

GPT 任务指令 = 定义角色 + 背景信息 + 任务目标 + 输出要求

GPT 任务指令 定义角色 背景信息 任务目标 输出要求 环境 GPT-4 0. 你是一名专业的导游&#xff0c;负责为我生成旅游计划&#xff0c;现在我来北京旅游&#xff0c;需要你为我生成一份 3天2晚的北京旅游规划。我的要求是&#xff1a;1.地点包括故宫、军播和环球影城。 2…

你一定能看懂的SQL事务及其实现原理

一。概念 事务 是数据库执行原子操作的基本单位。一个事务中的多个修改&#xff0c;则要么全部成功执行&#xff0c;要么全部不执行。 关于事务的 MYSQL 官网的解释 Transactions are atomic units of work that can be *committed* or *rolled back*. When a transaction ma…

substrate实例-基于OCW发送一个签名交易

目录标题 1. 获取substrate-node-template代码2. 添加一个用于测试的ocw-test目录至pallets3. 编写ocw-test/src/lib.rs代码3.1 需要用到的包名的引用3.2 模块crypto的实现3.3 mode pallet 的实现-config、storage、event3.4 mode pallet 的实现-call3.5 mode pallet 的实现-ho…

整理的汉字及拼音、编码数据文件,依据拼音声母进行归类共计2万多条

本篇文章主要讲解自己整理的汉字拼音数据资源的下载及使用方法。 资源截图 包含&#xff1a;sql、xls、txt、json等格式文件 汉字涵盖&#xff1a;多音字、生僻字 下载地址&#xff1a;https://download.csdn.net/download/hj960511/87705416 使用方法 步骤一、下载资源包&…

七、使用arcgis对道路结果进行后处理及iou优化步骤详解

最近在研究对道路的后处理 废话不多说 直接放我的教程了 分别对real真实和predict预测的图片进行镶嵌操作 教程在这里 工具在这里 结果如下 矢量化提取道路中心线 经过很多尝试 arcscan是提取效果最好的一个方法&#xff0c;操作见这 或者这里这篇文章注解更详细一点&am…

问题汇总1

问题汇总 Linux相关1. vim 修改挂载文件时 报错 read-only filesystem2.root 用户密码无法更改3.linux 用户被锁定4.linux 查看登录日志其他小问题 Windows 相关1.添加 删除 默认路由2.exel合并单元格 添加 分隔符 Linux相关 1. vim 修改挂载文件时 报错 read-only filesystem …

Linux namespace

​ 前言 从《initrd&init进程》可知&#xff0c;我们通过ssh连接linux服务器&#xff0c;其实主是linux启动一shell进程与我们做交互。而Linux又是多租户的&#xff0c;这使用得用户与用户间产生了&#xff0c;资源的争抢。 如何隔离资源&#xff0c;且让用户都无法察觉&…

SpringBoot项目实现热部署

文章目录 SpringBoot实现热部署手动开启热部署自动开启热部署热部署相关配置 SpringBoot实现热部署 什么是热部署&#xff1f; 所谓热部署&#xff0c;就是在应用正在运行的时候升级软件&#xff0c;却不需要重新启动应用。对于Java应用程序来说&#xff0c;热部署就是在运行时…

初学数据库

1、什么是数据库 数据库&#xff08;Database&#xff09;是按照数据结构来组织、存储和管理数据的仓库。 每个数据库都有一个或多个不同的API用于创建&#xff0c;访问&#xff0c;管理&#xff0c;搜索和复制所保存的数据。 我们也可以将数据存储在文件中&#xff0c;但是在…

企业级实践:大厂项目研发流程

引言 战国邹孟轲《孟子离娄上》&#xff1a;“离娄之明&#xff0c;公输子之巧&#xff0c;不以规矩&#xff0c;不能成方圆。” 每一个行业都有自己行之有效的规矩&#xff0c;同样软件行业也有自己一套的开发流程&#xff0c;今天就来跟大家聊一聊咱们公司的开发流程&#…

智能修改文案-智能写作平台

智能原创自动写作工具在线 随着人工智能技术的发展&#xff0c;智能原创自动写作工具在线已经成为了网络营销的一个重要工具。这种工具可以根据您输入的关键词和主题&#xff0c;自动生成高质量、原创性强的文章。下面是智能原创自动写作工具在线的优势。 节省时间和人力成本 …

IDEA重复下载SNAPSHOT包问题

问题现象 reimport 之后 状态栏显示resolving dependencies… 遇到某个比较大的快照包(33M)&#xff0c;同一天的第2个版本时 1.0-xxx-SNAPSHOT.时间戳-2 idea importer 会先分片下载 x.jar.part文件中&#xff0c;然后复制为x.jar吧 如图中所示&#xff0c;其实已经下载完了&…

C++四种类型转换运算符

C语言之所以增加强制类型转换的语法&#xff0c;就是为了强调风险&#xff0c;让程序员意识到自己在做什么。 但是&#xff0c;这种强调风险的方式还是比较粗放&#xff0c;粒度比较大&#xff0c;它并没有表明存在什么风险&#xff0c;风险程度如何。再者&#xff0c;C风格的…

深入浅出OkHttp,【带你手写】构建高效、高性能的网络请求框架

简述 OKHttp是一个用Java编写的网络框架&#xff0c;可用于 Android&#xff0c;以及一些基于Java的web应用开发中。它使用了HTTP/2标准的支持和连接池技术&#xff0c;可以让应用快速向Web服务器发送网络请求&#xff0c;并得到响应。OKHttp提供了一个简单的API&#xff0c;允…

【SQL】列的选择与查询

本文内容参考书籍《SQL基础教程》第二章&#xff0c;课后习题在最后&#xff0c;请多指教。之前章节的内容请点击下方链接。 前言 PostgreSQL的下载与安装 第一章 数据库的创建&#xff0c;表的创建、更新、删除 一、SELECT语句 1、查询表中的列 &#xff08;1&#xff09…

【每日一题】——移除元素

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…