| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 【C++】输入输出流(IO流) -> 正文阅读 |
|
[C++知识库]【C++】输入输出流(IO流) |
文章目录一、C语言的输入输出C语言中最常用到的输入输出方式就是scanf()与printf()。 scanf()是从标准输入设备(键盘) 读取数据,并将值存放在一个或一些变量中;printf()是将指定的文字/字符串输出到 标准输出设备(屏幕)。 C语言借助了相应的缓冲区来进行输入与输出。如下图所示: 对输入输出缓冲区的理解:
二、什么是流“流”即是流动,是物质从一处向另一处流动的过程。具体到这里,是对一种有序、连续、有方向性的数据(其单位可以是bit,byte,packet)的抽象描述。 C++流是指信息从外部输入设备(如键盘)向计算机内部(如内存)输入和从内存向外部输出设备(显示器)输出的过程。这种输入输出的过程被形象的比喻为“流”。 它的特性是:有序、连续、具有方向性 为了实现这种流动,C++定义了I/O标准类库,这些每个类都称为流或流类,用以完成某方面的功能,下面将介绍这些流。 三、C++的IO流1.概览C++系统实现了一个庞大的类的库,如下图所示。其中ios为基类,其他类都直接或间接派生自ios类。 2.标准IO流(1)cin、cout、cerr、clogC++标准库提供了4个全局流对象cin、cout、cerr、clog。使用cout进行标准输出,即数据从内存流向控制台(显示器);使用cin进行标准输入,即数据通过键盘输入到程序中;使用cerr用来进行标准错误的输出;使用clog进行日志的输出。 从前图可以看出,cout、cerr、clog是ostream类的三个不同的对象,因此这三个对象基本没有区别,只是应用场景不同。 如下图所示都是向显示器输出,本意是希望一般的输出用cout,错误输出用cerr,日志输出用clog,但一般很少用到后两个,全部用cout输出。 运行结果如下: (2)cin、cout与scanf、printfC++提供了cin、cout,C语言提供了scanf、printf,他们都可以进行输入输出,但建议能用cin、cout就优先用这两个,如果遇到格式化输入输出时用scanf、printf(cin、cout同样可以格式化输入输出,但是使用起来比较复杂,不如直接用现成的scanf、printf)。 同时,由于C++在某些方面与C语言有较大差异,有时混用四个输入输出也会出现问题。 比如字符串string在C++中用size值来标记字符串的结尾,而C语言下用’\0’来标示字符串的结尾,这一个差异在输入输出时就可能会产生问题,为此string还特意提供了c_str()来用于C语言下的操作。 (3)输入输出重载cin和cout可以直接输入和输出内置类型(如int、double等)和部分标准自定义类型(如string等),原因是标准库已经将所有这些类型的输入和输出重载了,直接使用即可。 对于我们自定义的类型,如果想直接使用cin、cout来输入输出,需要自己重载>>和<<,否则不能直接使用。 (4)getline同scanf一样,cin也是以空格和换行为间隔分割数据,所以对于一行有空格的数据,它并不能全部读取,这时就要用到getline,getline以换行为间隔分割数据,如下图所示。 运行结果如下: (5)循环输入当输入若干行内容时,可以用如下的解决方式。 运行结果如下:
可以用Ctrl+C来结束输入,其本质是向该进程发送了信号,具体可见【万字详解Linux系列】进程信号,在Linux下和Windows下都是一样的道理。 2.文件流fstream(1)ifstream、ofstreamifstream如下创建一个对象,name是文件名,mode是操作的方式。
mode有如下几种可供选择: ifstream对象可调用的成员函数,常用的有get,getline,read,seekg,tellg等。通过函数名即可大致了解其作用。get一次获取文件的一个字符,getline一次获取文件的一行,read从文件中读一段内容,seekg设置文件指针的位置,tellg查找文件指针的位置。 (2)用法
类似于C语言的用法下面的两段代码分别演示ifstream和ofstream对文件读写,写法类似于C语言中的fread、fwrite这些接口,只不过是变成了面向对象而已。 下面这段代码是用ifstream读文件中的内容。 运行结果如下: 下面这段代码是用ofstream向文件中写入内容,使用方法基本同ifstream。 运行结果如下: C++的用法下面是C++提供的文件流的新用法,文件流也是流,所以他也可以用<<或>>来进行读写,用法如下。 代码如下:
这样ofstream的对象也可以像cout那样通过流来向文件写入内容。 运行结果如下: ifstream使用方法同理,只不过流的方向要反一下,这里不再赘述。 3.字符串流sstreamsstream中包括istringstream、ostringstream 和 stringstream三个流,分别用来进行流的输入、输出和输入输出操作,但使用时一般直接用stringstream比较方便。 (1)读代码如下:
运行结果如下,对字符串的处理非常方便。 运行结果如下: (2)写在前面读的基础上再向新的结构体写入已读入的内容。 代码如下:
运行结果如下: 感谢阅读,如有错误请批评指正 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 21:33:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |